SORU
18 AĞUSTOS 2009, Salı


Nasıl ps1 PowerShell bir dosya için komut-satırı geçmesi

Yıllardır cmd/DOS/Windows kabuğu kullanılan ve toplu iş dosyaları için komut satırı argümanları geçtim. Örneğin, bir dosya var, "zuzu.bat" ve o, ben erişim %1, %2, vb. Şimdi, PowerShell script aradığımda aynı şeyi yapmak istiyorumCmd.exe bir kabuk içinde olduğum zaman. Bir senaryo var, "xuxu."(ve PowerShell ile TANINAN değişken benim için PS1 PS1 ve ilişkili dosyaları ekledim). ps1 Ama ne yaparsam yapayım, $args değişken bir şey elde etmek mümkün görünüyor. Her zaman uzunluğu 0.

Eğer PowerShell bir kabuk içinde olduğumu, çalışır cmd.exe yerine, (tabii ki). Ama henüz PowerShell ortamında tam zamanlı yaşamak için yeterince rahat değilim. Yazın istemiyorum "powershell.exe -komut xuxu.ps1 p1 p2 p3 p4". Yazın istiyorum "p3 p4 p1 p2". xuxu

Eğer öyleyse, nasıl bu mümkün değildir, ve?

Ben çalışamaz almak için örnek önemsiz, foo.ps1:

Write-Host "Num Args:" $args.Length;
foreach ($arg in $args)
{
    Write-Host "Arg: $arg";
}

Sonuç hep böyle

C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>

CEVAP
18 AĞUSTOS 2009, Salı


TAMAM, öncelikle bu PowerShell temel güvenlik özelliği kırılıyor. Bu anlayış, burada bunu nasıl olduğunu:

  1. Windows Explorer bir pencere açın
  2. MenüAraçlar->Klasör Seçenekleri->tabDosya Türleri
  3. PS1 dosya tipi ve Gelişmiş düğmesini tıklatın Bul
  4. Yeni düğmesini tıklatın
  5. Eylem için:Açın
  6. Uygulama için:"" "Dosya" "%1" %* . C:\WINNT\system32\WindowsPowerShell\v1.0\powershell.exe ^/strong>

Profiliniz ne bağlı olarak da orada -NoProfile bir argüman koymak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • max2sims2

    max2sims2

    19 Kasım 2008
  • Vsauce

    Vsauce

    30 Temmuz 2007