Başka bir .ps1 dosyasından bir .ps1 nasıl çalıştırılır?


14

İki PowerShell dosyam var. a.ps1 ve b.ps1.

A.ps1'de orta noktada b.ps1'de kod yürütmeye başlamak ve a.ps1 komut dosyasını sonlandırmak istiyorum.

Her iki dosyanın da aynı klasörde olduğunu düşünerek nasıl yapılır?


şu anda hiç başarı ile PS 'yol dosyasını' kullanıyorum
GibboK

Yanıtlar:


4

Yeni bir Power Shell işleminde b.ps1 yürütülürse sorun olmaz mı? Eğer öyleyse aşağıdakiler tarif ettiğiniz şeyi yapmalıdır.

Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))

"Invoke-Expression" aynı işlemde yürütülür, ancak b.ps1 öğesinin sonlandırılmasını bekler.



2

Farklı bir makaleden aldım ama burada uygulanabilir: teşekkürler ( /programming//users/3905079/briantist )

İlk olarak, uzaktaki bir makineye tek bir oturumda birden fazla çağrı yapmak istiyorsanız, önce bir PSSession oluşturun:

$session = New-PSSession -ComputerName $ComputerName

Ardından, sonraki tüm aramalarda bu oturumu kullanın:

Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code

} Ardından işiniz bittiğinde oturumu kapatın:

Remove-PSSession -Session $session

Ayrıca tam olarak bu komut dosyası olacak eşya bilmiyorsanız ama betiğinizi biliyorum whare başlar u bunu yapabilirsiniz:

$strInst = Get-ChildItem -Path $PSScriptRoot -Filter Import-Carbon.ps1 -recurse -ErrorAction SilentlyContinue -Force | Select Directory
Invoke-Experssion (start Powershell ($strinst\Import-Carbon.ps1)

(bu benim)


0

Geçerli dizininize başvurmak için $ PSScriptRoot sihirli değişkenini kullanın. Sonra ve işareti B komut dosyasını çağırın ("Çağrı operatörü"):

$script = $PSScriptRoot+"\b.ps1"
& $script

B'deki değişkenleri A kapsamında tutmak istiyorsanız, Dot kaynak operatörünü kullanarak komut dosyasını çalıştırabilirsiniz:

$script = $PSScriptRoot+"\b.ps1"
. $script
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.