2013-02-26 74 views
1

我有一個項目,可以將Office 365許可分配給用戶。有一個Web項目允許管理員查看可用許可證併爲用戶選擇許可證。在後臺,有一項服務每15分鐘執行一次實際的許可分配(以及許多其他任務)。我們不直接分配許可證的原因是用戶可能尚未同步到Office 365。如果DirSync尚未運行,服務將自動再次嘗試。作爲服務運行時未找到PowerShell模塊

回到我的問題:與Office 365的連接使用PowerShell模塊「MSOnline」。問題是這個模塊不能被服務加載。我總是收到標準錯誤消息:

指定的模塊'MSOnline'未加載,因爲在任何模塊目錄中未找到有效的模塊文件。

Web應用程序沒有這個問題。例如,它連接並可以檢索可用許可證。如果我使用LINQPad中的服務應用程序的代碼或作爲一個小型的獨立可執行文件,一切工作正常。只有服務無法加載模塊。誰能幫我?

以下代碼片段被Web應用程序和服務用於連接到Office 365(代碼被簡化以提高可讀性)。

P.S:該服務在 「本地系統」 帳戶下運行。

+2

您的PSModulePath環境變量是否包含MSOnline模塊所在的路徑? – 2013-02-26 15:06:48

+0

@DavidBrabant不幸的是,'PSModulePath'是正確的。這對於Web應用程序和服務來說是相同的價值。 – fero 2013-02-26 16:34:22

+1

您的服務是以32位還是64位爲目標運行的。它可能有一些影響。 – JPBlanc 2013-02-26 20:26:10

回答

1

您的服務是以32位還是64位爲目標運行的。我在多個案例中遇到了32/64問題。

+0

這是問題所在。雖然平臺的目標是'任何CPU',但是直到現在我還沒有注意到一個複選框(「首選32位」),這個複選框被選中了。所以該服務以32位模式運行。取消選中此選項是解決方案。 – fero 2013-02-27 15:08:18