2015-04-27 5 views
6

Ich versuche PowerShell von C# zu verwenden, um eine neue Datei auf dem Desktop zu erstellen. Im Terminal würden Sie tun:C# PowerShell leere Textdatei auf dem Desktop erstellen

cd desktop 
$null >> newfile.txt 

So die bisherigen Aussagen Ich versuche, dies in C# zu tun, um zu imitieren:

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

    PowerShellInstance.Invoke(); 
} 

Dies läuft ohne Ausnahmen, aber die Datei wird nicht erstellt auf der Desktop. Kann jemand darauf hinweisen, was ich mit der AddScript falsch mache?

EDIT

Es sieht aus wie das Problem aus der Verwendung cd kommt und dann nacheinander die erstellen.

Ich konnte es durch

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

tun arbeiten erhalten, wenn jemand weiß, wie eine CD-Befehl gefolgt von einem anderen zu tun, bitte mich wissen lassen.

+0

Nur um zu verdeutlichen: Sie möchten speziell PowerShell verwenden, um dies zu tun? Sie möchten stattdessen keine C# -Dateilösung? – Rup

+1

Ja Ich teste grundsätzlich Dinge in PowerShell von C#, da ich es später verwenden werde, um Git-Befehle auszuführen. – Nived

+0

@Nived Sorry, aber ich würde das nie in der Konsole machen (redirect '$ null'), um eine neue Datei zu erstellen. 'New-Item $ HOME \ Desktop \ newfile.txt' –

Antwort

1

Für mich sieht es so aus, als ob der Befehl cd desktop selbst nicht funktioniert. Wenn Sie eine Powershell-Konsole öffnen, dann ist der Standardpfad, in dem es geöffnet ist, C:\Users\user_name\ und höchstwahrscheinlich von C# es öffnet sich nicht mit diesem Pfad, sondern öffnet sich mit dem Arbeitsverzeichnis, das der Debug-Ordner Ihres aktuellen Projekts ist; [wie von @Nived kommentiert]

Es gibt kein Problem mit Ihrem aktuellen Code. Ändern Sie einfach das Skript-Anweisung unten und es sollte in Ordnung

cd C:\Users\user_name\desktop; $null >> newfile.txt 

mit der Arbeit, dass Ihre C# -Code etwas sein sollte wie

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

PowerShellInstance.Invoke(); 
} 
+0

Es geht in den Debug-Ordner Ihres aktuellen Projekts, von dem aus Sie starten. Sie müssen also den vollständigen Pfad angeben oder '' 'dazu verwenden. – Nived

+0

@Nived, gut zu wissen. Sie können meine Antwort bearbeiten und diese Information beifügen, wenn Sie möchten. – Rahul

+1

In .NET können Sie auch Dinge wie 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' verwenden, um den vollständigen Pfad des Ordners zu erhalten, in dem sich "Desktop" -Elemente befinden. –

0

Sie die Umgebungsvariablen verwenden, können den Desktop als auch zu finden.

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

    PowerShellInstance.Invoke(); 
} 
Verwandte Themen