简体   繁体   中英

PowerShell Script Runs Locally, but Errors on Remote

I have a PowerShell script I am writing to create new users in our domain, as well as email address. The script works when I run it directly on Exchange. However, if I try to do it from my local PC either with Enter-PSSession or Invoke-Command I get the error:

The term 'Get-ADUser' is not recognized as the name of a cmdlet...

Running that same command from the local machine does work. And running that command on the remote machine works, just not if I run the script remotely.

Here is my script:

$cred = Get-Credential

$first_name = Read-Host -Prompt "What is the new user's first name?"
$last_name = Read-Host -Prompt "What is the new user's last name?"
$copy_from = Read-Host -Prompt "Copy from other user (leave blank if not)?"
$password = Read-Host -Prompt "New user's password?"
$ss_password = ConvertTo-SecureString -String $password -AsPlainText -Force

$new_user_name = $last_name.Substring(0,3) + $first_name.Substring(0,2)
$new_user_name = $new_user_name.ToLower()
Write-Host "Creating user $new_user_name..." -ForegroundColor Green

if ([string]::IsNullOrEmpty($copy_from)) 
{
    Write-Host "Setting up new user (not copying...)" -ForegroundColor Yellow
    New-ADUser -Name "$first_name $last_name" -AccountPassword $ss_password -SamAccountName $new_user_name -PassThru | Enable-ADAccount
} 
else 
{
    $copy_from_user = Get-ADUser -Identity $copy_from
    Write-Host "Copying user from: " $copy_from_user.Name -ForegroundColor Yellow
    $ou = $copy_from_user.DistinguishedName -replace '^cn=.+?(?<!\\),'
    New-ADUser -Name "$first_name $last_name" -AccountPassword $ss_password -Path $ou -SamAccountName $new_user_name -PassThru | Enable-ADAccount
    $new_user = Get-ADUser -Identity $new_user_name

    #Time to copy their group memberships
    Get-ADUser -Identity $copy_from -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $new_user_name
}

$pn = $new_user_name + "@INDY"
Set-ADUser -Identity $new_user_name -GivenName $first_name -Surname $last_name -UserPrincipalName $pn

#Now create email
$email_select = Read-Host -Prompt "Select email domain (1.  Woodmizer; 2.  Lastec;  3. Brightstone)"

if ($email_select -eq 2) 
{
    $domain = "@lastec.com"
}
elseif ($email_select -eq 3)
{
    $domain = "@brightstoneabrasives.com"
}
else 
{
    $domain = "@woodmizer.com"
}

$email_address1 = $first_name.Substring(0,1) + $last_name + $domain
Write-Host "Creating mailbox $email_address1..." -ForegroundColor Green

Enable-Mailbox -Identity $new_user_name -Database "Mailbox Database 1188513962"
Start-Sleep -s 10
Get-Mailbox -Identity $new_user_name | Set-Mailbox -EmailAddresses @{add="$email_address1"} -EMailAddressPolicyEnabled $false
Get-Mailbox -Identity $new_user_name | Set-Mailbox -PrimarySmtpAddress $email_address1 -EmailAddressPolicyEnabled $false

Write-Host "Finished." -ForegroundColor Green

看起来那台机器上没有安装 ActiveDirectory 模块,您可以安装 MSFT RSAT 工具来获取它。

If you want this script to run on machines that don't have the Active Directory module, you can simply add this to the top of your script to import the cmdlets via session..

$cred = Get-Credential "DOMAIN\adminuser"
$ADsession = New-PSSession -ComputerName DOMAINCONTROLLERNAME -Credential $cred
Import-Module -PSSession $ADsession ActiveDirectory

I also notice you're trying to run Exchange cmdlets..

$exchSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://EXCHANGESERVER/PowerShell/" -Authentication Kerberos
Import-PSSession $exchSession 

Try the following, It works!! {I tried after giving the Authentication type}

$pass = ConvertTo-SecureString -AsPlainText 'PASSWORD' -Force

$MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'USERNAME',$pass

$s=New-PSSession SERVERNAME -Credential $MySecureCreds -Authentication Credssp

Invoke-Command -Session $s -scriptblock { Get-CsUser User }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM