【问题标题】:Can I set the "-Server" parameter for use with Active Directory cmdlets per PS session?我可以为每个 PS 会话设置“-Server”参数以与 Active Directory cmdlet 一起使用吗?
【发布时间】:2021-07-17 04:29:24
【问题描述】:

我正在管理三个域(我们称它们为 xx.company.local、xy.company.local 和 xz.company.local),并且我拥有所有三个域的域管理员帐户。

如果我以我的 xx 域管理员用户身份运行 powershell,我不需要为 AD cmdlet 指定 -Server 参数,但在以其他两个身份运行 PS 时我会这样做。我认为这是因为我的电脑只加入了 xx 域。

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

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

【问题讨论】:

  • 打开 xy 和 xz 会话是什么意思?是连接到这些域上的域控制器还是在加入这些域的远程服务器上调用命令?如果是这种情况,我认为不需要指定服务器参数。
  • 使用 runas 和 xy 或 xz 域的域管理员用户打开 powershell

标签: powershell active-directory


【解决方案1】:

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

首先,我在 .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

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

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多