gpt4 book ai didi

powershell - 为什么 Powershell 在删除所有 Pssession 并添加一个新的之后不导入交换命令行开关?

转载 作者:行者123 更新时间:2023-12-02 23:37:30 25 4
gpt4 key购买 nike

上下文

我创建了一个小 Powershell 脚本,可让您在 2 个 Exchange Server(Pssession 到 2 个服务器)之间进行切换。
Begin脚本的一部分,我删除了所有现有的 pssession(它位于默认的 Exchange 2010 服务器上)。

    # Remove all Ps-Sesssions
Get-PSSession | Remove-PSSession

然后在 Process我这样做的部分:
Process
{
# Choose Server:

# Default server
$server = "2010"

if ($ExchangeVersion -eq "2016") {
$server = "2217ex0010at01"
} elseif ($ExchangeVersion -eq "2010") {
$server = "2217exlimbx01"

} else {
Write-Host "Server wurde nicht gefunden, gibt 2010 oder 2016 ein"
}

# Add Pssession and import it
$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$server/powershell
Import-PSSession $s -AllowClobber
}

问题

当我启动 powershell 时,它会将一个 pssession 导入到 2010 服务器。一切正常。我有所有命令行开关,例如 get-mailbox但是当我像这样运行脚本时 Set-ExchangeServer -ExchangeVersion "2016"一切似乎都很好。但是,当我尝试任何交换命令行开关时,它就不存在了。

我尝试了什么

我手动输入了脚本中的代码以将 session 导入 2016。这就是奇怪的部分。当我手动执行它时,它可以工作并且我拥有所有命令行开关。

这个问题的原因可能是什么?

最佳答案

我为自己做了一些简单的功能来删除以前的交换 session ,它可能会对你有所帮助。

可能您没有删除 tmp*...模块...

对于内部部署:

Function Remove-LocalExchangeShell
{
if ($LocalSession = Get-PSSession | ? {$_.ComputerName -match 'exchSvrName'}) {Remove-PSSession $LocalSession}
if ($TmpModule = Get-Module -Name tmp*) {Remove-Module $TmpModule}
}

对于 Office365:
Function Remove-365ExchangeShell
{
if ($365Session = Get-PSSession | ? {$_.ComputerName -match 'Outlook'}) {Remove-PSSession $365Session}
if ($TmpModule = Get-Module -Name tmp*) {Remove-Module $TmpModule}
}

在执行 New-PSSession 之前运行你需要的那个

关于powershell - 为什么 Powershell 在删除所有 Pssession 并添加一个新的之后不导入交换命令行开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51742688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com