У меня есть файл Excel с кнопками, которые запускают PowerShell для выполнения сценариев (добавление участников в группы, подключение к серверу обмена для настройки учетной записи электронной почты и т. Д. c.), Есть как 3 файла с более чем 50 кнопками, и мы необходимо выполнять его каждые несколько дней
Сценарий фактически вызывает PowerShell и выполняет такую команду, как добавление членов в группу на основе значения ячейки в файлах Excel. Он работал нормально, и ниже приведен пример существующего кода:
Dim pid As Variant
Dim a As String
Dim i As Long
For i = 1 To ThisWorkbook.Worksheets("Add AD Group & DL").Range("a9999").End(xlUp).Row - 8
a = "powershell -noprofile -command ""&{Add-ADGroupMember -Identity dgroup -members uname}"""
a = Replace(a, "uname", Range("a" & i + 8).Value)
a = Replace(a, "dgroup", Range("g" & i + 8).Value)
exe1 = a
pid = Shell(exe1, vbHide)
Debug.Print exe1
Next i
, а ниже - еще один пример, который необходимо подключиться к серверу обмена:
Dim pid As Variant
Dim a As String
Dim i As Long
For i = 1 To ThisWorkbook.Worksheets("Create Email Account").Range("b9999").End(xlUp).Row - 8
a = "powershell -noprofile -command ""&{Set-ExecutionPolicy -Scope CurrentUser unrestricted;$serverURI = 'http://hkg-mrs.abcdm001.corp.domain.com/PowerShell/';$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $serverURI -Authentication Kerberos;Import-PSSession $Session}""" _
& ";Get-Mailbox -identity username | Set-Mailbox -RetentionPolicy 'CPA MailBox Folder Policy for General Users'" _
& ";Enable-Mailbox username -Archive" _
& ";Set-Mailbox -Identity username -ArchiveQuota 5GB -ArchiveWarningQuota 4.5GB -emailaddresspolicyenabled $false" _
& ";Set-CASMailbox username -PopEnabled:$False -ImapEnabled:$False" _
& ";Set-Mailbox -Identity username -UserPrincipalName eaddress" _
& ";Remove-PSSession -Session (Get-PSSession)"""
a = Replace(a, "username", Range("b" & i + 8).Value)
a = Replace(a, "eaddress", Range("f" & i + 8).Value)
a = Replace(a, "fname", Range("c" & i + 8).Value)
a = Replace(a, "lname", Range("e" & i + 8).Value)
exe1 = a
pid = Shell(exe1, vbHide)
Debug.Print exe1
Range("h" & i + 8).Interior.Color = XlRgbColor.rgbGreen
Application.Wait Now + TimeSerial(0, 0, 3)
Next i
однако мы теперь требуется использовать другие учетные записи (администратор домена) для выполнения сценария, пока мы входим в P C, используя нашу собственную учетную запись. Способ, которым я хотел бы достичь, - это попросить пользователя ввести имя пользователя и пароль в определенную ячейку c (скажем, B1 и B2 на Sheet1) в excel, и я хотел бы изменить сценарий VBA, чтобы указать имя пользователя и пароль в этих c ячейках и для запуска скриптов.
Я знаю, что могу запросить учетные данные windows, чтобы получить учетные данные администратора домена, но поскольку скрипт запускается как 20 PowerShell почти в в то же время, поэтому пользователю непросто ввести пароль 20 раз. Есть какой-нибудь простой способ достичь этого ??
Большое вам спасибо.