我可以为每个 PS 会话设置“-Server”参数以用于 Active Directory cmdlet 吗?

Can I set the "-Server" parameter for use with Active Directory cmdlets per PS session?

我正在管理三个域(我们称它们为 xx.company.local、xy.company.local 和 xz.company.local)并且我已经为所有三个域设置了域管理员帐户。

如果我 运行 powershell 作为我的 xx 域管理员用户,我不需要为 AD cmdlet 指定 -Server 参数,但我在 运行ning PS 时指定为另外两个。我想这是因为我的电脑只加入了 xx 域。

在打开 xy 和 xz powershell 会话时我可以 运行 设置那个 -Server 参数的命令吗? (我正在研究 $PSHome 和 $PSDefaultParameterValues,但我想在浪费太多时间之前我会先问一下。)

额外的想法:我有三个 运行 作为我的 ADUC gui (mmc.exe %SystemRoot%\system32\dsa.msc) 和一次性单曲的快捷方式xy 和 xz 域的步骤是更改域。我希望有一个类似的步骤我可以 运行 用于 powershell 方面。

所以我能够修改我的脚本,因为没有人发布答案。

首先,我在 .psm1 文件中创建了一个全局变量

$domain_controller = Get-ADDomainController -Discover -Service PrimaryDC

然后,我创建了一个新函数

function Set-DomainController {
    [CmdletBinding()]
    Param( 
        [ValidateSet(“xx”, ”xy”, ”xz”)] 
        [Parameter(Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string]
        $xxxyxz
    )
    process {
        if ($PSBoundParameters.ContainsKey('xxxyxz')) {
            $script:domain_controller = Get-ADDomainController -Discover -Service PrimaryDC -Domain "$xxxyxz.company.local"
        }
        else {

            Write-Output ""
            Write-Output "You are currently using " $script:domain_controller.Hostname
            Write-Output ""
            Write-Output "Select a domain:"
            Write-Output "[1] - xx.company.local"
            Write-Output "[2] - xy.company.local"
            Write-Output "[3] - xz.company.local"
            Write-Output ""
            $selection = Read-Host "Please make a selection"
            switch ($selection) {
                '1' {
                    $script:domain_controller = Get-ADDomainController -Discover -Service PrimaryDC -Domain xx.company.local
                } 
                '2' {
                    $script:domain_controller = Get-ADDomainController -Discover -Service PrimaryDC -Domain xy.company.local
                } 
                '3' {
                    $script:domain_controller = Get-ADDomainController -Discover -Service PrimaryDC -Domain xzcompany.local
                }    
            }
            Write-Output ""
            Write-Output "You are currently using " $script:domain_controller.Hostname
            Write-Output ""
        }
    }
}
Set-Alias -Name setdc -Value Set-DomainController

最后,我检查了模块中的其余功能,并在整个过程中向每个 Get-AD* 调用添加了 -Server $script:domain_controller

花了几个小时,但现在完成了 ...仍在寻找更好的东西...