2015-10-07 81 views
0

我正在使用powershell腳本來查找並運行批處理文件(.cmd)。Powershell運行外部批處理

$batchFile = (Get-ChildItem $dest -recurse).Where({ $_.Name -like '*.deploy.cmd'},"First", 1) | % { $_.FullName } Write-Output "This is a batch file $batchFile"

的輸出是:This is This is a batch file C:\Builds\01\2a4b7711\staging\_PublishedWebsites\TalentWebApp_Package\TalentWebApp.deploy.cmd,這是什麼的預期。

但是,我如何真正使用腳本變量從powershell內運行此命令腳本? $batchFile /Y /M:devenv.outdomain.com嘗試了幾件事,它沒有奏效。

我們使用Powershell 4.預先感謝!

+0

*嘗試了幾件事情,但它沒有奏效。*你究竟做了什麼,所以我們不必再提供這些東西?什麼*沒有工作*的意思? '&$ batchFile/Y/M:devenv.outdomain.com' – PetSerAl

+0

感謝您的回覆。這正是我所尋找的,它的工作原理!我試圖讓'Invoke-Command'工作,我從來不必從Powershell調用外部腳本。讓它成爲答案,如果你願意,我會接受。 – Victor

回答

1

要通過名稱調用命令存儲在變量中,您需要使用調用運算符&。這實際上並不是特定於外部腳本的。任何PowerShell命令都可以這樣調用:

$CommandName1='Get-ChildItem' 
$CommandName2='Where-Object' 
$CommandName3='Format-List' 
&$CommandName1 -File -Recurse|&$CommandName2 Length -ge 1gb|&$CommandName3 FullName,Length