2010-08-17 2 views
3

저는 IIS 웹 사이트 배포를 자동화하는 PowerShell 스크립트를 작성하려고합니다. 나는 이와 같은 그러나, WebAdministration 명령을 실행 할 때마다IIS 용 Windows PowerShell 스냅인이 32 비트에서 실패합니까?

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 

:

Get-Website -Name "MYWebsite" 

내가 오류가 난 내 윈도우 서버 2008 R2 시스템에서 스크립트를 실행하는 32 비트에서하려고 해요 같은 :

Get-Website : Retrieving the COM class factory for component with CLSID {688EEE 
E5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 80040154. 
At line:1 char:12 
+ Get-Website <<<< -Name "MyWebsite" 
    + CategoryInfo   : NotSpecified: (:) [Get-Website], COMException 
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Micr 
    osoft.IIs.PowerShell.Provider.GetWebsiteCommand 

PowerShell.exe의 64 비트 버전으로 전환이 문제를 해결하지만 불가능 저 또한 더-g이없는 Microsoft 팀 파운데이션 서버 2008 전동 공구 PSSnapin를 사용 할 수있게 나를 위해.

어떻게하면이 문제를 극복 할 수 있을까요? 미리 감사드립니다.

+0

이것은 나를 위해 문제를 해결 한 명확한 대답이었습니다 - https://stackoverflow.com/a/6872000/852806 – HockeyJ

답변

-1

점을 연결하기 만하면됩니다. TFS Power Tools 2008 Powershell Snapin won't run in on 64-bit in Windows 2008 R2

"마이크로 소프트의 캐시 홍콩이 문제에 대한 해결 방법으로 날을 제공하는 자세한 내용은 MSDN TFS PowerTools에서 포럼을 여기에서 찾을 수 있습니다 종류 충분했다 :. http://social.msdn.microsoft.com/Forums/en-US/tfspowertools/thread/a116799a-0476-4c42-aa3e-45d8ba23739e/?prof=required"urig "다른 주제에 자신의 질문에 대답

다음과 나를 위해 잘 작동으로 수정은 다음과 같습니다 (이중 확인을 클릭합니다, 단지 * .reg 파일을 더블 클릭)

다음과 같은 내용을 보관하고 레지스트리에 *로 .reg 파일 가져 오기를 저장

Windows 레지스트리 편집기 버전 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ PowerShellSnapIns \ Microsoft.TeamFoundation.PowerShell] "PowerShellVersion"= "2.0" "Vendor"= "Microsoft Corporation" "Description"= "이것은 PowerShell 스냅인입니다. Team Foundation Server cmdlet을 포함합니다. ""VendorIndirect "="Microsoft.TeamFoundation.PowerShell, Microsoft ""DescriptionIndirect "="Microsoft.TeamFoundation."Version"= "10.0.0.0" "ApplicationBase"= "C : \ Program Files (x86) \ Microsoft Team Foundation Server 2010 전동 공구" "PowerShell은 Team Foundation Server cmdlet을 포함하는 PowerShell 스냅인입니다. "TeamName"= "Microsoft"Team Foundation Server 2010 Power Tools \ Microsoft. "ModuleName"= "C : \ Program Files (x86) \ Microsoft Team Foundation Server 2010 PowerShell, 버전 = 10.0.0.0, Culture = 중립 PublicKeyToken = b03f5f7f11d50a3a" TeamFoundation.PowerTools.PowerShell.dll ""CustomPSSnapInType "="Microsoft.TeamFoundation.PowerTools.PowerShell.TFPSSnapIn "

+0

아니요, 다른 질문에 대한 대답은 여기에 관련이 없습니다. 하나는 x64에서 작동하지 않는 TFS powershell 스냅인에 관한 것입니다. 이것은 WOW64로 x86에서 작동하지 않는 IIS 모듈에 관한 것입니다. 쉽게 혼란 스럽지만 아니오. – piers7

4

은 실행 :

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 

은 실제로 당신이 원하지 않는 것을 분명히

이 ;-) 파워 쉘의 32 비트 버전을로드합니다. 64 비트 버전을 얻으려면 system32에서 버전을 실행하십시오. 네 진짜로 요.

당신이 등을 확인할 수 있습니다

ps> [intptr]::size 
4 

를 (는) 4를 반환하면, 그것은 32 비트입니다. 64 비트 PowerShell은 TFS PowerTools에서로드 스크립트를 실행하려면 시작 - 작업 -RunAs32을 사용하여 다음 시도 할 수

+1

나는 그가 TFS Snapin (32-bit only)을 사용하기를 원한다고 생각합니다.)가 * 64 *로 표시되는 WebAdmin 모듈과 함께 사용됩니다. –

2

한 가지 Oisin 말한대로 64 비트 PowerShell을로드하는 것입니다 8. ​​

-Oisin 복귀합니다 필요한 경우 TFS cmdlet을 스냅인하고 실행합니다. 백그라운드 작업에서 실행되는 명령에서 필수 정보를 출력하십시오. Wait-Job을 사용하여 완료 될 때까지 기다린 다음 Receive-Job을 사용하여 32 비트 측의 데이터를 기본 64 비트 PowerShell 세션으로 다시 가져옵니다.

PS> [IntPtr]::Size 
8 
PS> $job = Start-Job { [intptr]::size } -RunAs32 
PS> Wait-Job $job 

Id    Name  State  HasMoreData  Location  Command 
--    ----  -----  -----------  --------  ------- 
3    Job3  Completed True   localhost [intptr]::size 


PS> Receive-Job $job 
4 
+0

키스를 똑바로 세워 줘서 고마워. 귀하의 수정 내용을 반영하도록 제 질문을 수정했습니다. 저는 IIS PSProvider와 TFS 전동 공구 PSSnapin을 함께 사용할 수있는 방법에 관해서도 여전히 분실 상태입니다. 어떤 아이디어? – urig

+0

64 비트 스냅인과 동일한 * PowerShell 세션에서 32 비트 스냅인을로드 할 수있는 방법이 없습니다. 내 답변에서 설명한대로 32 비트 백그라운드 작업을 사용하는 것을 제외하고. –

1

미래에이를 발견하는 사람들을 위해 저는 powershell을 시작한 방법을 다시 한 번 확인해야한다고 덧붙이고 싶습니다 . 나는 같은 오류를 얻고 있었고 왜 솔루션이 64 비트 버전을 사용하는 것에 대한 참조 였는지 알 수 없었습니다. 이미 내가 생각했을 때였습니다.

제 3 자 32 비트 실행 프로그램으로 powershell을 실행했기 때문에 powershell은 system32 폴더에서 시작되었지만 32 비트 실행 파일로 떨어지고있었습니다. 이것이 내가 사용하고있는 버전을 확인하는 방법에 대해 x0n에게 감사드립니다.

관련 문제