【问题标题】:How to execute PowerShell code remotely from my Workstation ISE without install & loading module?如何在不安装和加载模块的情况下从我的 Workstation ISE 远程执行 PowerShell 代码?
【发布时间】:2019-04-11 10:06:01
【问题描述】:

我有一台名为 PRODAZAD01-VM 的专用服务器,它正在运行 Azure Active Directory 同步到 Office 365。

[CmdletBinding()]
Param(
    [Parameter(position = 0, mandatory = $true)]
    [ValidateSet('Delta', 'Full')]
    [String]$Type,
    [string]$ComputerName = 'PRODAZAD01-VM'
)
Invoke-Command -ComputerName $ComputerName -ArgumentList $type -ScriptBlock {
    Param($Type)
    If ($Type -eq 'Full') {$Type = 'Initial'}
    Import-Module adsync
    Start-ADSyncSyncCycle -PolicyType $Type
}

如何执行 PowerShell 以强制它从笔记本电脑上的 PowerShell ISE 同步,而无需每次都安装模块并加载它?

【问题讨论】:

  • 您需要在运行命令的机器上导入模块,否则您将无法获得可用的 cmdlet。
  • 好的,那么最终的命令/脚本会是什么?
  • 问题中的代码有什么问题?

标签: azure powershell active-directory azure-active-directory office365


【解决方案1】:

Drew 向您指出的是,使用 PowerShell 隐式远程处理具有这些 cmdlet 的计算机,从而将这些 cmdlet 代理到您的工作站进行会话,就像使用其他 cmdlet 一样,例如 ADDS。例如 -

见:How to use AD cmdlets *OP 更新 *

[CmdletBinding()]

Param
(
    [Parameter(position = 0, mandatory = $true)]
    [ValidateSet('Delta', 'Initial')]
    [String]$Type,
    [string]$ComputerName = 'PRODAZAD01-VM',
    [string]$Creds = 'YourAdminCreds' #(Get-Credential -Credential 'YourAdminCreds')
)

$ADSession = New-PSSession -Authentication Kerberos -ComputerName $ComputerName 

Invoke-Command -Session $ADSession -ScriptBlock { 
    'ADSync','AzureADPreview','MSOnline' | 
    %{ Import-Module -Name $_ -Force } 
}

Import-PSSession -Session $ADSession
Get-Module -Name 'ADSync','AzureADPreview','MSOnline'

Connect-MsolService -Credential $Creds
Connect-AzureAD -Credential $Creds

If ($Type -eq 'Delta') { Start-ADSyncSyncCycle -PolicyType $Type }
Else { Start-ADSyncSyncCycle -PolicyType $Type }

【讨论】:

  • 感谢您的加入。在您上面的代码中,如何指定 Delta 或 Initial ADSync?
  • 查看我的更新。我离开了 params 部分,因为我假设您会重新添加它。如果您设置了验证集,则只能使用您设置的内容。但既然 cmdlet 是字面意思,Delta 或 Initial,为什么不从一开始就使用它们。
  • 不用担心......很高兴它有用
  • If ($Type -eq 'Delta') { Start-ADSyncSyncCycle -PolicyType $Type } Else { Start-ADSyncSyncCycle -PolicyType $Type } - 换句话说,在这两种情况下都只是Start-ADSyncSyncCycle -PolicyType $Type
  • 是的,因为 type 将包含用户从 validateset 选项中选择的任何值。现在,可以通过设置默认参数值进一步简化它,从而消除对代码 else 部分的需要。意思是使用选择运行,然后使用默认的其他使用选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2012-12-23
  • 2011-08-06
  • 2023-01-29
  • 2010-10-03
  • 1970-01-01
  • 2017-01-29
相关资源
最近更新 更多