【问题标题】:Powershell - Set -server flag globally (AD cmdlets)Powershell - 全局设置 -server 标志(AD cmdlet)
【发布时间】:2017-11-27 18:05:12
【问题描述】:

我正在尝试使用 Active Directory cmdlet 为整个脚本全局设置 -server 标志。

我的问题是我正在运行来自不同域的脚本,并且有几个域我需要在单个管理域中执行这些命令。

例子:

Get-ADUser 'john' -server domain1.acme.com

不过我只想运行:

Get-ADUser 'john'

来自域 2,无需在每次使用 AD cmdlet 时都指定 -server 标志。

目前,我只是声明一个 $server 变量并将其插入到每个命令中,例如Get-ADUser 'john' -server $server

但这相当混乱,我觉得必须有更好的方法。我的研究一无所获。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以使用$PSDefaultParameterValues,以下示例为get-aduser添加服务器参数默认值:

    $PSDefaultParameterValues.Add('Get-ADUser:server', 'domain1.acme.com')
    

    在添加psdefaultparametervalue 之后,您可以像这样使用命令行开关:

    Get-ADUser 'john'
    

    PSDefaultParameterValues 也支持通配符

    $PSDefaultParameterValues.Add('Get-AD*:server', 'localhost')

    供参考: https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/03/use-powershell-default-parameter-values-to-simplify-scripts/

    PS:此功能仅适用于 PowerShell V3 及以上版本

    【讨论】:

    • 谢谢,这是完美的。我使用了*-AD*:server,它为 AD cmdlet 获取最多/设置。当然,每个脚本都经过测试,因此可能会有一些像 Get-GPO 等被遗漏(并已修复),但实际上我可能会尝试 *:server 并希望/假设我所有的 cmdlet 都有 -server 标志仍然工作。
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2014-10-13
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多