我尝试做的是运行此脚本:
$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中的按钮单击运行整个命令。我谷歌搜索了很多试图解决问题,因为我通常做但没有运气:(
任何帮助都会非常感激。
答案 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命令仍将在远程服务器上执行。记得在完成后关闭会话。