Start-Process

Yerel bilgisayarda bir veya daha fazla işlem başlatır.

Syntax

Start-Process
     [-FilePath] <String>
     [[-ArgumentList] <String[]>]
     [-Credential <PSCredential>]
     [-WorkingDirectory <String>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <String>]
     [-RedirectStandardInput <String>]
     [-RedirectStandardOutput <String>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Process
     [-FilePath] <String>
     [[-ArgumentList] <String[]>]
     [-WorkingDirectory <String>]
     [-PassThru]
     [-Verb <String>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

Start-Process Cmdlet, yerel bilgisayarda bir veya daha fazla işlem başlatır. Varsayılan olarak, Start-Process geçerli işlemde tanımlanan tüm ortam değişkenlerini devralan yeni bir işlem oluşturur.

İşlemde çalıştırılacak programı belirtmek için yürütülebilir bir dosya veya betik dosyası ya da bilgisayardaki bir program kullanılarak açılabilir bir dosya girin. Yürütülemeyen bir dosya belirtirseniz, Start-Process cmdlet'ine benzer şekilde Invoke-Item dosyayla ilişkili programı başlatır.

kullanıcı profili yükleme, işlemi yeni bir pencerede başlatma veya alternatif kimlik bilgileri kullanma gibi seçenekleri belirtmek için parametresini Start-Process kullanabilirsiniz.

Örnekler

Örnek 1: Varsayılan değerleri kullanan bir işlem başlatma

Bu örnek, geçerli klasördeki Sort.exe dosyayı kullanan bir işlem başlatır. Komut, varsayılan pencere stili, çalışma klasörü ve kimlik bilgileri de dahil olmak üzere tüm varsayılan değerleri kullanır.

Start-Process -FilePath "sort.exe"

Örnek 2: Metin dosyasını yazdırma

Bu örnek, dosyayı yazdıran C:\PS-Test\MyFile.txt bir işlem başlatır.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Örnek 3: Öğeleri yeni bir dosyaya sıralama işlemi başlatma

Bu örnek, dosyadaki öğeleri sıralayan ve dosyalardaki TestSort.txt sıralanmış öğeleri Sorted.txt döndüren bir işlem başlatır. Tüm hatalar dosyaya SortError.txt yazılır. UseNewEnvironment parametresi, işlemin kendi ortam değişkenleriyle çalıştığını belirtir.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

Bu örnek, cmdlet'ine parametre geçirmek için splatting kullanır. Daha fazla bilgi için bkz . about_Splatting.

Örnek 4: Ekranı kaplamış bir pencerede işlem başlatma

Bu örnek işlemi başlatır Notepad.exe . Pencere ekranı kaplar ve işlem tamamlanana kadar pencereyi korur.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Örnek 5: PowerShell'i yönetici olarak başlatma

Bu örnek, PowerShell'i Yönetici olarak çalıştır seçeneğini kullanarak başlatır.

Start-Process -FilePath "powershell" -Verb RunAs

Örnek 6: İşlem başlatmak için farklı fiiller kullanma

Bu örnekte, bir işlem başlatılırken kullanılabilecek fiillerin nasıl bulunacağı gösterilmektedir. Kullanılabilir fiiller, işlemde çalışan dosyanın dosya adı uzantısı tarafından belirlenir.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs

open
runas
runasuser

Örnek, PowerShell işleminde çalışan dosyası için bir System.Diagnostics.ProcessStartInfo nesnesi oluşturmak için powershell.exekullanırNew-Object. ProcessStartInfo nesnesinin Fiiller özelliği, ile veya bir dosya çalıştıran herhangi bir .exe işlemle powershell.exe ve RunAs fiilleri kullanabileceğinizi gösterir.

Örnek 7: İşlemin bağımsız değişkenlerini belirtme

Her iki komut da Windows komut yorumlayıcısını Program Files başlatır ve klasörde bir dir komut yayınlar. Bu klasör adı bir boşluk içerdiğinden, değerin kaçış tırnaklarıyla çevrelenmesi gerekir. İlk komutun ArgumentList olarak bir dize belirttiğini unutmayın. İkinci komut bir dize dizisidir.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Örnek 8: Linux'ta ayrılmış işlem oluşturma

Windows'ta, Start-Process başlatma kabuğundan bağımsız olarak çalışmaya devam eden bağımsız bir işlem oluşturur. Windows olmayan platformlarda, yeni başlatılan işlem başlatılan kabuğa eklenir. Başlatan kabuk kapatılırsa alt işlem sonlandırılır.

Unix benzeri platformlarda alt işlemin sonlandırılmasını önlemek için ile nohupbirleştirebilirsinizStart-Process. Aşağıdaki örnek, başlatma oturumunu kapattıktan sonra bile canlı kalan Linux üzerinde PowerShell'in arka plan örneğini başlatır. komutu, nohup geçerli dizindeki dosyada nohup.out çıktı toplar.

# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'

Bu örnekte, Start-Process ayrılmış bir işlem olarak başlatılan pwsh Linux nohup komutunu çalıştırmaktır. Daha fazla bilgi için Wikipedia'da nohup makalesine bakın.

Parametreler

-ArgumentList

Bu cmdlet işlemi başlatırken kullanılacak parametreleri veya parametre değerlerini belirtir. Bağımsız değişkenler boşluklarla ayrılmış tek bir dize veya virgülle ayrılmış bir dize dizisi olarak kabul edilebilir. cmdlet,diziyi tek bir dizede birleştirir ve dizinin her öğesi tek bir boşlukla ayrılır.

ArgumentList değerleri yeni işleme geçirildiğinde PowerShell dizelerinin dış tırnak işaretleri dahil değildir. Parametreler veya parametre değerleri boşluk veya tırnak işareti içeriyorsa, bunların kaçış çift tırnak içine alınması gerekir. Daha fazla bilgi için bkz . about_Quoting_Rules.

En iyi sonuçlar için, tüm bağımsız değişkenleri ve gerekli tırnak karakterlerini içeren tek bir ArgumentList değeri kullanın.

Type:String[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Bu eylemi gerçekleştirme iznine sahip bir kullanıcı hesabı belirtir. Varsayılan olarak, cmdlet geçerli kullanıcının kimlik bilgilerini kullanır.

User01 veya Domain01\User01 gibi bir kullanıcı adı yazın veya cmdlet tarafından Get-Credential oluşturulan bir PSCredential nesnesi girin. Bir kullanıcı adı yazarsanız parolayı girmeniz istenir.

Kimlik bilgileri bir PSCredential nesnesinde depolanır ve parola SecureString olarak depolanır.

Not

SecureString veri koruması hakkında daha fazla bilgi için bkz. SecureString ne kadar güvenli?.

Type:PSCredential
Aliases:RunAs
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

İşlemde çalışan programın isteğe bağlı yolunu ve dosya adını belirtir. Bilgisayardaki bir programla ilişkilendirilmiş yürütülebilir dosyanın veya veya dosyası gibi .txt.doc bir belgenin adını girin. Bu parametre zorunludur.

Yalnızca sistem komutuna karşılık olmayan bir dosya adı belirtirseniz, yolu belirtmek için WorkingDirectory parametresini kullanın.

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

Bu cmdlet'in geçerli kullanıcının kayıt defteri anahtarında HKEY_USERS depolanan Windows kullanıcı profilini yüklediğini gösterir. parametresi Windows dışı sistemler için geçerli değildir.

Bu parametre PowerShell profillerini etkilemez. Daha fazla bilgi için bkz . about_Profiles.

Type:SwitchParameter
Aliases:Lup
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewWindow

Geçerli konsol penceresinde yeni işlemi başlatın. Varsayılan olarak Windows'ta PowerShell yeni bir pencere açar. Windows dışı sistemlerde yeni bir pencere asla elde etmezsiniz.

Aynı komutta NoNewWindow ve WindowStyle parametrelerini kullanamazsınız.

parametresi Windows dışı sistemler için geçerli değildir.

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Cmdlet'in başlattığı her işlem için bir işlem nesnesi döndürür. Varsayılan olarak, bu cmdlet herhangi bir çıkış oluşturmaz.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardError

Bir dosya belirtir. Bu cmdlet, işlem tarafından oluşturulan hataları belirttiğiniz bir dosyaya gönderir. Yolu ve dosya adını girin. Varsayılan olarak, hatalar konsolda görüntülenir.

Type:String
Aliases:RSE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardInput

Bir dosya belirtir. Bu cmdlet, belirtilen dosyadan girişi okur. Giriş dosyasının yolunu ve dosya adını girin. Varsayılan olarak, işlem girdisini klavyeden alır.

Type:String
Aliases:RSI
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardOutput

Bir dosya belirtir. Bu cmdlet, işlem tarafından oluşturulan çıkışı belirttiğiniz bir dosyaya gönderir. Yolu ve dosya adını girin. Varsayılan olarak, çıkış konsolda görüntülenir.

Type:String
Aliases:RSO
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseNewEnvironment

Bu cmdlet'in işlem için belirtilen yeni ortam değişkenlerini kullandığını gösterir. Varsayılan olarak, başlatılan işlem üst işlemden devralınan ortam değişkenleriyle çalışır.

Windows'da UseNewEnvironment kullandığınızda, yeni işlem yalnızca Makine kapsamı için tanımlanan varsayılan ortam değişkenlerini içerecek şekilde başlar. Bu, öğesinin SYSTEM olarak ayarlandığı yan etkiye $env:USERNAME sahiptir. Kullanıcı kapsamındaki değişkenlerin hiçbiri dahil değil.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Verb

Bu cmdlet işlemi başlatırken kullanılacak bir fiil belirtir. Kullanılabilir fiiller, işlemde çalışan dosyanın dosya adı uzantısı tarafından belirlenir.

Aşağıdaki tabloda bazı yaygın işlem dosyası türlerine yönelik fiiller gösterilmektedir.

Dosya türü Fiiller
.cmd Edit, Open, Print, RunAs, , RunAsUser
.exe Open, RunAs, RunAsUser
.txt Open, Print, PrintTo
.Wav Open, Play

Bir işlemde çalıştırılan dosyayla kullanılabilecek fiilleri bulmak için cmdlet'ini New-Object kullanarak dosya için bir System.Diagnostics.ProcessStartInfo nesnesi oluşturun. Kullanılabilir fiiller, ProcessStartInfo nesnesinin Fiiller özelliğindedir. Ayrıntılar için örneklere bakın.

parametresi Windows dışı sistemler için geçerli değildir.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Bu cmdlet'in daha fazla giriş kabul etmeden önce belirtilen işlemin ve alt öğelerinin tamamlanmasını beklediğini gösterir. Bu parametre komut istemini gizler veya işlemler bitene kadar pencereyi korur.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.

Bu parametre PowerShell 6.0'da kullanıma sunulmuştur.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WindowStyle

Yeni işlem için kullanılan pencerenin durumunu belirtir. Varsayılan değer şudur: Normal. Bu parametrenin kabul edilebilir değerleri şunlardır:

  • Normal
  • Hidden
  • Minimized
  • Maximized

Aynı komutta WindowStyle ve NoNewWindow parametrelerini kullanamazsınız.

parametresi Windows dışı sistemler için geçerli değildir. Windows olmayan sistemlerde kullanırken, hiçbir zaman yeni bir pencere elde etmezsiniz.

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

Yeni işlemin başlaması gereken konumu belirtir.

Belirtilmediğinde, cmdlet varsayılan olarak FilePath parametresinde belirtilen tam konumu kullanır. FilePath parametresinin değeri tam olarak nitelenmiş değilse, varsayılan olarak çağırma işleminin geçerli çalışma dizinine ayarlanır.

Joker karakterler desteklenmez. Yol, joker karakter olarak yorumlanacak karakterler içermemelidir.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

None

Nesneleri bu cmdlet'e yöneltemezsiniz.

Çıkışlar

None

Varsayılan olarak, bu cmdlet çıkış döndürmez.

Process

PassThru parametresini kullandığınızda, bu cmdlet bir İşlem nesnesi döndürür.

Notlar

PowerShell için aşağıdaki diğer adları Start-Processiçerir:

  • Tüm platformlar
    • saps
  • Windows
    • start

Yerel komutlar, işletim sisteminde yüklü yürütülebilir dosyalardır. Bu yürütülebilir dosyalar PowerShell gibi herhangi bir komut satırı kabuğundan çalıştırılabilir. Genellikle komutunu veya içinde bashcmd.exeyaptığınız gibi tam olarak çalıştırırsınız. Start-Process Cmdlet herhangi bir yerel komutu çalıştırmak için kullanılabilir, ancak yalnızca komutun nasıl yürütülebileceğini denetlemeniz gerektiğinde kullanılmalıdır.

Start-Process Windows dışı platformlarda GUI programları çalıştırmak için kullanışlıdır. Örneğin, GNOME Desktop ortamlarında yaygın olarak kullanılan grafik metin düzenleyicisini başlatmak için komutunu çalıştırın Start-Proces gedit .

Varsayılan olarak, Start-Process zaman uyumsuz olarak bir işlem başlatır. Yeni işlem çalışmaya devam ediyor olsa bile denetim anında PowerShell'e döndürülür.

  • Yerel sistemde, başlatılan işlem çağrı işleminden bağımsız olarak devam ediyor.
  • Uzak bir sistemde, uzak oturum sona erdiğinde, komutun hemen ardından Start-Process yeni işlem sonlandırılır. Bu nedenle, başlatılan işlemin oturumdan daha uzun süre beklemesini beklerken uzak bir oturumda kullanamazsınız Start-Process .

Uzak oturumda kullanmanız Start-Process gerekiyorsa Wait parametresiyle çağırın. Veya uzak sistemde yeni bir işlem oluşturmak için başka yöntemler de kullanabilirsiniz.

Wait parametresini kullanırken, Start-Process denetimi döndürmeden önce işlem ağacının (işlem ve tüm alt öğeleri) çıkışını bekler. Bu, yalnızca belirtilen işlemlerin Wait-Process çıkışını bekleyen cmdlet'in davranışından farklıdır.

Windows'da için en yaygın kullanım örneği Start-Process , yeni işlem çıkana kadar ilerlemeyi engellemek için Wait parametresini kullanmaktır. Windows dışı sistemlerde, komut satırı uygulamaları için varsayılan davranış ile eşdeğer Start-Process -Waitolduğundan bu nadiren gereklidir.

Bu cmdlet, System.Diagnostics.Process sınıfının Start yöntemi kullanılarak uygulanır. Bu yöntem hakkında daha fazla bilgi için bkz . Process.Start Yöntemi.