Aracılığıyla paylaş


Start-Process

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

Sözdizimi

UseShellExecute

Start-Process
    [-FilePath] <string>
    [[-ArgumentList] <string[]>]
    [-WorkingDirectory <string>]
    [-PassThru]
    [-Verb <string>]
    [-WindowStyle <ProcessWindowStyle>]
    [-Wait]
    [-Environment <hashtable>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

Start-Process cmdlet'i 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-ProcessInvoke-Item cmdlet'ine benzer şekilde 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 Start-Process parametrelerini kullanabilirsiniz.

Örnekler

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

Bu örnek, geçerli klasördeki Sort.exe dosyasını 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, C:\PS-Test\MyFile.txt dosyasını yazdıran 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, TestSort.txt dosyasındaki öğeleri sıralayan ve Sorted.txt dosyalarındaki sıralanmış öğeleri döndüren bir işlem başlatır. Hatalar SortError.txt dosyasına 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, Notepad.exe işlemini başlatır. 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, Yönetici olarak çalıştır seçeneğini kullanarak PowerShell'i 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 dosya olan New-Objectiçin system.diagnostics.ProcessStartInfo nesnesi oluşturmak için powershell.exe kullanır. ProcessStartInfo nesnesinin Fiilleri özelliği, Open ve RunAs fiillerini powershell.exeveya .exe dosyası çalıştıran herhangi bir işlemle kullanabileceğinizi gösterir.

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

Her iki komut da Windows komut yorumlayıcısını başlatır ve dir klasöründe bir Program Files komutu yayınlar. Bu klasör adı bir boşluk içerdiğinden, değerin kaçış tırnaklarıyla çevrelenmesi gerekir. İlk komutun bir dizeyi ArgumentListolarak belirttiğine dikkat edin. İ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'da 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 Start-Processnohupile birleştirebilirsiniz. Aşağıdaki örnek, başlatma oturumunu kapattıktan sonra bile canlı kalan Linux üzerinde PowerShell'in arka plan örneğini başlatır. nohup komutu, geçerli dizindeki dosya 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 nohup başlatan Linux pwsh komutunu çalıştırmaktadır. Daha fazla bilgi için Wikipedia'da nohup makalesine bakın.

Örnek 9: Bir işlem için ortam değişkenlerini geçersiz kılma

Varsayılan olarak, Start-Processkullandığınızda, yeni işlem geçerli oturumla aynı ortam değişkenleriyle oluşturulur. bu değişkenlerin değerlerini geçersiz kılmak için Ortam parametresini kullanabilirsiniz.

Bu örnekte, FOO ortam değişkeni foo değer olarak oturuma eklenir.

Örnek Start-Process üç kez çalıştırılır ve her seferinde FOO değerini döndürür. İlk komut ortam değişkenini geçersiz kılmaz. İkinci komutta FOObarolarak ayarlanır. Üçüncü komutta, FOO$nullolarak ayarlanır ve bu da bunu kaldırır.

$Env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$Env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$Env:FOO' -Environment @{
    FOO  = 'bar'
}
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$Env:FOO' -Environment @{
    FOO  = $null
}
foo
bar

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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Argümanlar

Parametre kümeleri

(All)
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Confirm

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

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Cf

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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\User01gibi bir kullanıcı adı yazın veya cmdlet'i tarafından oluşturulan Get-Credential nesnesi girin. Bir kullanıcı adı yazarsanız parolayı girmeniz istenir.

Kimlik bilgileri bir PSCredential nesnesinde depolanır ve parola SecureStringolarak depolanır.

Uyarı

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

Parametre özellikleri

Tür:PSCredential
Default value:Current user
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:RunAs

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Environment

İşlem için karma tablo olarak geçersiz kılınacak bir veya daha fazla ortam değişkeni belirtir. Karma tabloda bir ortam değişkeninin adını anahtar olarak ve istenen değeri belirtin. Ortam değişkenini ayarlamak için değerini $nullolarak belirtin.

Belirtilen değişkenler işlemde değiştirilir. PATH ortam değişkenini belirttiğinizde, $PSHOME değeriyle ve ardından bu parametreden belirtilen değerle değiştirilir. Windows'da komut, yeni değerden sonra Makine ve Kullanıcı kapsamlarında PATH değerlerini ekler.

Bu parametre PowerShell 7.4'e eklendi.

Parametre özellikleri

Tür:Hashtable
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-FilePath

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

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

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:PSPath, Yol

Parametre kümeleri

(All)
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-LoadUserProfile

Bu cmdlet'in geçerli kullanıcının HKEY_USERS kayıt defteri anahtarında 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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Lup

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Kkb

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:RSE

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:RSI

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:RSO

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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 Machine kapsamı için tanımlanan varsayılan ortam değişkenlerini içerir. Bu, $Env:USERNAMESYSTEMolarak ayarlanmasının yan etkisine sahiptir. Kullanıcı kapsamındaki değişkenlerin hiçbiri dahil değil.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Default
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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ışan dosyayla kullanılabilecek fiilleri bulmak için, New-Object cmdlet'ini kullanarak dosyaya yönelik 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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

UseShellExecute
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-WhatIf

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

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

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Wi

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-WindowStyle

Yeni işlem için kullanılan pencerenin durumunu belirtir. Varsayılan değer şudur: Normal. Bu parametre için kabul edilebilir değerler ş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.

Parametre özellikleri

Tür:ProcessWindowStyle
Default value:None
Kabul edilen değerler:Normal, Hidden, Minimized, Maximized
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

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, Start-Processiçin aşağıdaki diğer adları iç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 bash veya cmd.exe'da yaptığınız gibi çalıştırırsınız. Start-Process cmdlet'i 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 Start-Process gedit çalıştırın.

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, Start-Process komutunun hemen ardından yeni işlem sonlandırılır. Bu nedenle, başlatılan işlemin oturumdan daha uzun süre devam etmesi için Start-Process uzak oturumda kullanamazsınız.

uzak oturumda Start-Process kullanmanız 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 çıkışını bekleyen Wait-Process cmdlet'inin davranışından farklıdır.

Windows'da, Start-Process için en yaygın kullanım örneği, 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ış Start-Process -Waiteşdeğer olduğ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 Metodu.