2016-03-21 14 views
1

Çok sayıda denetim olanağı sağlayan bir toplu iş komut dosyası var. Bu komut dosyasını çalıştırdığım klasör masaüstümde, oturum açmış olan kullanıcı adının "Doktor A" (komutun çalıştığı yerden c:\user\Doctor a\Desktop\script\test.bat) olduğu yere yerleştirilir. Ben bu komutu çalıştırdığınızdageçersiz yol

powershell.exe -ExecutionPolicy Bypass "%~dp0\Audit_folders_and_regkeys.ps1" 

Ben Öyle görünüyor

The term 'C:\Users\Doctor' is not recognized as the name of a cmdlet, function, 
script file, or operable program. Check the spelling of the name, or if a path 
was included, verify that the path is correct and try again. 
At line:1 char:16 
+ C:\Users\Doctor <<<< A\Desktop\CyperPilot_Audit_Conf_External_Network\CyperPilot_Audit_Conf_External_Network\\Audit_folders_and_regkeys.ps1 
    + CategoryInfo   : ObjectNotFound: (C:\Users\Doctor:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException

söyleyerek bir hata alıyorum:

Ve aşağıdaki satırla bir PowerShell komutu başlatmak için çalışıyorum çalışan som toplu komutları sonra

C:\Users\Doctor'dan daha ileri gitmeyecek, bunu düzeltmek için toplu dosyamda ne yazarım?

+0

Klasörü c: \ script \ .... içine koyarsam mükemmel çalışır –

+4

'powershell.exe -ExecutionPolicy Bypass -Dosya"% ~ dp0 \ Audit_folders_and_regkeys.ps1 "' – PetSerAl

cevap

2

PowerShell'i, yaptığınız gibi (bu, temel olarak -Command parametresiyle aynıdır) çift tırnaklı dizenin içeriği bir PowerShell ifadesi (veya PowerShell ifadelerinin listesi) olarak yorumlanır.

powershell.exe -ExecutionPolicy Bypass "%~dp0\Audit_folders_and_regkeys.ps1" 
  • CMD pozisyonel parametreyi %~dp0 genişletir:

    powershell.exe -ExecutionPolicy Bypass "c:\user\Doctor a\Desktop\script\Audit_folders_and_regkeys.ps1" 
    
  • CMD powershell.exe başlattı ve komut dizesini geçer

    1. Sen komutu girin: Ne olur temelde şudur (kaldırılan çift tırnaklara dikkat edin):

    2. PowerShell, deyimi çift tırnak işareti olmadan görür ve numaralı bağımsız değişkenle (varolmayan) c:\user\Doctor komutunu çalıştırmayı dener. Aksi takdirde komut dizesinde iç içe tırnak koymak gerekecek

      powershell.exe -ExecutionPolicy Bypass -File "%~dp0\Audit_folders_and_regkeys.ps1" 
      

      :

    bu konuyla ilgilenmesi için en iyi yolu @PetSerAl Yorum önerilen olarak, parametre -File kullanmaktır oth, bu durumda da çağrı operatörü (&) kullanmanız gerektiğini

    powershell.exe -ExecutionPolicy Bypass "& '%~dp0\Audit_folders_and_regkeys.ps1'" 
    

    Not: argümanı geçerken kaldırılır olanlar için telafi etmek ereksiyon PowerShell basitçe yol dizgisini eker.

  • İlgili konular