2015-06-26 212 views
0

我需要一些批處理腳本的幫助以遞歸方式查找特定文件所在的文件夾。我有下面的PowerShell腳本,它工作得很好,但由於執行策略我無法運行它因此我想知道如果有人能幫我把它轉換爲批處理文件嗎?批處理腳本查找文件


$val = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{785A2E83-C8B2-46BB-8839-514DE2243EAD}' -Name "DisplayName" -ErrorAction silentlycontinue 

if($val.DisplayName -ne 'Internet Explorer 11') { 
    $ccmIE11Folders = @(Get-ChildItem -Path C:\Windows\ccmcache -Filter IE11-Setup-Full.msi -Recurse) 

    If($ccmIE11Folders.count -gt 0) { 
    & "$($ccmIE11Folders[0].DirectoryName)\Install.cmd" 
    } 
} 

腳本首先查找註冊表項屬性。如果它不存在,則遞歸地在C:\ Windows \ CCMCache文件夾下找到文件「IE11-Setup-Full.msi」。如果發現它從該結果文件夾運行Install.cmd。

如果您想知道,我們正在使用SCCM在企業中部署IE11,但其中一小部分由於某些未知原因而失敗,所以我試圖使用此腳本重新運行安裝程序。

在此先感謝。

+0

怎麼樣了'set-ExecutionPolicy不受限制-scope Process'之前運行腳本? – Vesper

+0

我在運行powershell腳本之前在批處理文件中嘗試過,但是它會引發以下錯誤:Set-ExecutionPolicy:Windows PowerShell更新了執行策略successly,但是該設置被在更具體的scop中定義的策略覆蓋e。由於覆蓋,您的shell將保留其當前有效執行「RemoteSigned」策略 。鍵入「Get-ExecutionPolicy -List」查看您的執行情況設置。有關更多信息,請參閱「Get-Help Set-ExecutionPo licy」。 urityException + FullyQualifiedErrorId:ExecutionPolic – Steve

回答

0

一種替代方法是改變你的PS腳本,使其符合現行的執行策略。你可以簽署腳本。或者,如果腳本實際上不是遠程的,則可以在執行時在本地重新創建腳本。如果腳本已經存儲在本地執行它的計算機上,但它仍然被認爲是遠程的,它很可能是從另一臺計算機上覆制的。

當我遇到這個問題時,我用記事本創建了一個新的空白.ps1文件,用記事本打開了舊腳本,將所有內容複製到剪貼板並粘貼到新文件中。普雷斯托!新文件不再是「遠程」的。祝你好運。

0

你可以只調用它,有效地重新設置標誌,在它的廣告前,疏通cmdfile完全無誤:

If ($ccmIE11Folders.count -gt 0) { 
     $cmd = "$($ccmIE11Folders[0].DirectoryName)\Install.cmd" 
     Unblock-File $cmd 
     & $cmd 
    }