我可以为每个 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
花了几个小时,但现在完成了
...仍在寻找更好的东西...
我正在管理三个域(我们称它们为 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
花了几个小时,但现在完成了 ...仍在寻找更好的东西...