[英]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腳本
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.