簡體   English   中英

帶有變量的遠程Exchange Powershell會話

[英]Remote Exchange Powershell session with variables

我具有腳本和編程方面的初學者知識,並且擁有一組PowerShell命令,在弄清楚如何將其轉換為腳本時遇到了問題。

通過以域管理員帳戶身份運行Exchange 2007 PowerShell控制台,然后運行以下命令將命令傳遞到Exchange 2013混合服務器以與Office 365一起使用,可以從Windows 7計算機成功運行以下遠程命令:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://hybridexch2013.contoso.com/PowerShell/ -Authentication Kerberos

Import-PSSession $Session

Enable-RemoteMailbox jame.doe@contoso.com -RemoteRoutingAddress jane.doe@contosoinc.mail.onmicrosoft.com

我越看越不知道自己在進步。 請參閱下文,了解我的邏輯在此方面的運作方式。 我了解這是不正確且不完整的。 我已經注釋掉了我先前擁有的功能,但是不確定我是否正確地執行了該功能,或者根本不需要該功能。

param($enableMailbox)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://hybridexch2013.contoso.com/PowerShell/ -Authentication Kerberos
Import-PSSession $Session -AllowClobber

$fname = Read-Host "What is the user's first name?"
$lname = Read-Host "What is the user's last name?"
#function Func($enableMailbox)
#{
$enableMailbox = "Enable-RemoteMailbox $fname.$lname@contoso.com -RemoteRoutingAddress $fname.$lname@contosoinc.mail.onmicrosoft.com"
#}
#Func $enableMailbox
Write-Host $enableMailbox

我還發現,如果我手動運行:

Enable-RemoteMailbox $fname.$lname@contoso.com -RemoteRoutingAddress $fname.$lname@contosoinc.mail.onmicrosoft.com

我什么都沒有。 因此,我什至不了解如何將變量傳遞給字符串以正確運行命令。 即使我跑步:

$fname = "Jane"
$lname = "Doe"
$enableMailbox = "Enable-RemoteMailbox $fname.$lname@contoso.com -RemoteRoutingAddress $fname.$lname@contosoinc.mail.onmicrosoft.com"

    Write-Host $enableMailbox

我沒有結果。

我試圖使用這些頁面上的幫助來了解param函數: 具有params *和*函數的Powershell腳本

通過命令行將變量傳遞到Powershell腳本

https://devcentral.f5.com/blogs/us/powershell-abcs-p-is-for-parameters

http://www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_27900846.html

但是我發現參數函數很難理解,甚至不確定在這里我朝着正確的方向前進。 到目前為止,似乎唯一可行的方法是遠程連接PowerShell。

如果我需要幫助並且我的能力不足,請提供幫助。

簡而言之,參數功能...

 Function Write-Something
    {
        Param($InputText)
        Write-Host $InputText
    }

Write-Something Hello

結果是:你好

如上例所示,使用Param Section將參數添加到您的Function中,

因此,對於您的腳本:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://hybridexch2013.contoso.com/PowerShell/ -Authentication Kerberos
Import-PSSession $Session -AllowClobber

Function Enable-MBX
{
Param($Fname,$Lname)

 Enable-RemoteMailbox "$Fname $Lname" -RemoteRoutingAddress "$fname.$lname@contoso.mail.onmicrosoft.com"  
}

Enable-MBX Jane Doe

我認為您只是對Write-Host感到困惑。 我不確定您是否嘗試編寫enable-remotemailbox進行控制台或執行。 您擁有的代碼應該可以正常寫入控制台(屏幕),但不會執行該命令。 要執行命令:

Enable-RemoteMailbox "$fname.$lname@contoso.com" -RemoteRoutingAddress "$fname.$lname@contosoinc.mail.onmicrosoft.com"

雙引號內的所有內容都會擴展。 例如:如果$ fname等於“ Bob”,則“ $ fname”將擴展為“ Bob”。 但是,如果將整個命令用引號括起來放在變量中,則Write-Host將不會執行該命令。 Write-Host旨在將輸出寫入屏幕,因此您只需在控制台中看到命令即可。

如果要進一步擴展,可以使用子字符串運算符$()。 例如:

Write-Host "$($fname.length).$($lname.length)"

以“ 3.5”表示“鮑勃”和“史密斯”。

為避免擴展,請使用單引號:

Write-Host '$($fname.length).$($lname.length)'

將“ $($ fname.length)。$($ lname.length)”寫入控制台。

以下(與您的代碼類似)不帶引號: Write-Host $fname.$lname@contoso.com將嘗試拉出$ fname的$lname@contoso.com屬性,在這種情況下,這是沒有意義的(doesn' t存在)。 詳細地說,它等效於Write-Host $fname.($lname@contoso.com)

暫無
暫無

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

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