簡體   English   中英

從powershell腳本執行powershell.exe(在ISE中運行,但不在腳本中運行)

[英]Executing powershell.exe from powershell script (run in ISE but not in script)

我是這些功能強大的Power Shell世界的新手。 我的腳本有問題,非常感謝您的幫助。

我有一個腳本“ cmd4.ps1”,該腳本需要運行另一個腳本“ Transfer.ps1”,該腳本需要接收3個字符串參數,並且需要作為與“ cmd4.ps1”不同的其他進程來運行。

cmd4.ps1:

$Script="-File """+$LocalDir+"\Remote\Transfer.ps1"" http://"+$ServerIP+"/Upload/"+$FileName+" "+$ServerIP+" "+$LocalIP

Start-Process powershell.exe -ArgumentList $Script

射精后, $Script的值類似於

-File "c:\temp re\Remote\Transfer.ps1" http://10.1.1.1/Upload/file.txt 10.1.1.1 10.1.1.10

包含使用-File參數運行Powershell.exe腳本的語法以及Transfer.ps1需要的三個參數( "http://10.1.1.1/Upload/file.txt", 10.1.1.1, 10.1.1.10 ) 。

當我在PowerShell ISE中編寫這些指令時,我可以看到每個值都是正確的,並且以正確的值執行了PowerShell.exe,一切正常!但是,如果我將這些指令放在“ cmd4.ps1”腳本中,則無法正常工作,我表示參數不正確,因為我可以看到它以powershell啟動,但從未結束。

-ArgumentList需要一個字符串參數數組,而不是單個字符串。 嘗試以下方法:

$ScriptArgs = @(
    '-File'
    "$LocalDir\Remote\Transfer.ps1"
    "http://$ServerIP/Upload/$FileName $ServerIP $LocalIP"
)

Start-Process powershell.exe -ArgumentList $ScriptArgs

請注意,您可以簡化args的字符串構造,如上所示。

為什么不把它放在cmd4.ps1中呢?

& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM