在Powershell中调用Exchange命令 - 在“数据”部分中不允许阻止

时间:2015-10-28 21:55:04

标签: powershell exchange-server powershell-remoting

我尝试做的是运行此脚本:

$WPFcmdCreateNewUser.Add_Click({

$ScriptBlockContent = {
    param ($first,
        $last,
        $upn,
        $ou,
        $password
    )
    $encryptedpass = ConvertTo-SecureString -AsPlainText $password -Force
    New-RemoteMailbox -Name $name -OnPremisesOrganizationalUnit $ou -UserPrincipalName $upn -FirstName $first -LastName $last -Password $encryptedpass -ResetPasswordOnNextLogon $false
}
    $ex = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://SERVERNAME/PowerShell/
    Invoke-Command -Session $ex -ScriptBlock $ScriptBlockContent -ArgumentList ($WPFtxtNewFirstName.Text, $WPFtxtNewLastName.Text, $WPFtxtNewAlias.Text, $WPFcboNewOU.SelectedItem.Content, $WPFtxtNewPassword.Text)
})

但它给了我错误:

ERROR: A Begin statement block, Process statement block, or parameter statement is not allowed in a Data section.
ERROR:     + CategoryInfo          : ParserError: (:) [], ParseException
ERROR:     + FullyQualifiedErrorId : InvalidScriptBlockInDataSection
ERROR:     + PSComputerName        : SERVERNAME

我从XAML Powershell GUI中的按钮单击运行整个命令。我谷歌搜索了很多试图解决问题,因为我通常做但没有运气:(

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

看起来Exchange使用受限语言模式进行远程会话,并且您无法在会话中执行脚本块。

  

作为安全功能,语言模式显然受控制   服务器(Exchange),如果要启用执行,则   您需要以交互方式登录(RDP或控制台)的脚本块   通过以下方式交换并创建新的会话配置   注册-PSSessionConfiguration。然后您可以连接到Exchange   通过New-PSSession -ConfigurationName使用此会话配置   然后你就可以通过传递它来执行脚本块   会话实例到Invoke-Command -Session。

参考:

答案 1 :(得分:0)

这里有点老旧,但看到谷歌搜索相当高,我想我可以添加如何解决这个问题:

$DomainCredential = (Get-Credential)
$fqdn = "<The fully qualified domain name of the target server>"

#Creates a session to the Exchange Remote Management Shell so that we can run Exchange commands. Use https:// if you have a proper setup with certificates. ( Mine was in test env )
$ConfigSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$fqdn/powershell `
          -Credential $DomainCredential -Authentication Kerberos

#Imports the module that exists in the session, in this case, Exchange Management -AllowClobber gives the imported commands presedence.
          Import-Module (Import-PSSession $ConfigSession -AllowClobber)

这将像在本地会话中一样导入Exchange命令。 Exchange命令仍将在远程服务器上执行。记得在完成后关闭会话。