Import-PSSession - сбросить маску учетных данных - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема со скриптом powershell, используемым в нашем домене для создания новых пользователей: Служба поддержки вызовет .bat как администратор, эта bat вызывает файл скрипта для автоматизации создания. В этом сценарии создаются и импортируются два сеанса для локального использования командлетов Exchange и AD. Во время / после импорта создается вторая / третья маска учетных данных, но нажатие кнопки «Отмена» ничего не изменит, сценарий будет выполняться без проблем. Тем не менее это раздражает службу поддержки .. При запуске .ps1 непосредственно от ISE маска не будет показана. Кроме того, когда C & Ping создает и импортирует часть скрипта в новый файл и вызывает его так же, как и раньше, также не будет отображать эту маску ..

Здесь часть .ps1-файла:

<#
.DESCRIPTION
    Creates a new standard user
.NOTES
    Requires        : Exchange 2016 Remote Session
    Req.OS Version  : not tested
    Req.PS Version  : not tested
.EXAMPLE
    Create-User.ps1 -datapath \\path\to\userdata.csv -credentialobject $cred
 #>
Param (
    [string]$datapath, <#Folder where the CSVs sit #>
    [System.Management.Automation.CredentialAttribute()]$credentialobject = $null
)
#region SET global var definitions
$ErrorActionPreference = "Continue"
Start-Transcript -path $ScriptLogPath  # | out-null

#endregion

#region SET var definitions

$userfile = "$datapath\userdata.txt"
$groupfile = "$datapath\groupdata.txt"

#Exchange
$MSXremotingserver = "exchangehostname"
$MSXdatabasenames = @("msx_db")

#AD
$domaincontroller = "dchostname"
$ADremotingserver = $domaincontroller
$BaseDN = "OU=Users,DC=domain,DC=local"

#endregion

#region Import Userdata
# CSV's are getting imported here - WORKING
#endregion

#region INIT Remotesession

#Get AD Creds / use given AD Creds
if (($credentialobject -ne $null) -and (($credentialobject.GetType()).name -eq "PSCredential")){
    $UserCredential = $credentialobject
}else{
    $UserCredential = Get-Credential
        # Get credentials to create the remote-sessions. Seems to be working.
}

$MSXSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://$MSXremotingserver/powershell -Credential $UserCredential
echo "import..."
$null = Import-PSSession $MSXSession -AllowClobber -DisableNameChecking  # | out-null
# After the import (Progress bars running through on top of the PS) another credential-mask appearing, "Cancel" makes the script run through without further errors.
echo "OK"

$ADSession = New-PSsession -Computername $ADremotingserver -Credential $UserCredential
Invoke-Command -Command {Import-Module ActiveDirectory -DisableNameChecking} -Session $ADSession  # | out-null
echo "import..."
Import-PSSession -Session $ADSession -Module "ActiveDirectory" -Prefix Remote -AllowClobber -DisableNameChecking  # | out-null
# After the import (Progress bars running through on top of the PS) another credential-mask appearing, "Cancel" makes the script run through without further errors.
echo "OK"


#AD-user already existing?
if ([bool](get-remoteaduser -LDAPFilter "(SamAccountName=$($userdata.Kuerzel))")){
    #Throw custom error - AD-User bereits vorhanden! 
}


#build Account...

# AD-user and Mailbox are created and configured. WORKING!


#endregion 

#region END Script

Get-PSSession | Remove-PSSession
Stop-Transcript
Write-Host "Beende Skript..."
start-sleep -Seconds 3
exit 10000

#endregion

А вот как называется .ps1:

%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -file \\helpdeskserver\powershell_userdata$\Create-User.ps1 \\helpdeskserver\path\to\csv"

Я не знаю, что делать. Перепробовал много разных версий каждой команды, пробовал вводить / выводить, ничего не поделаешь .. Похоже, Google не знает такого поведения, как и все, кто находится здесь в Stackoverflow ..

Спасибо за любые советы и помощь, я оценю!

С уважением, Ting3l

Редактировать: При запуске .bat-файла без прав администратора (или с помощью щелчка правой кнопкой мыши -> другой пользователь .. -> учетная запись администратора) второй / третий диалог учетных данных не появится, вместо этого я получаю " Индекс вне диапазона "- исключение.

1 Ответ

0 голосов
/ 03 апреля 2019

Может быть, это неважно, но вы можете попытаться выйти из сеанса по Exit-PSSession. После этого используйте exit 1000. Becoaser, когда вы используете exit в сеансе, завершает сеанс (где весь код после будет игнорироваться, но сценарий будет успешно завершен)

...