Использование средства упаковщика powershell для сопоставления общего файлового ресурса Azure с учетной записью службы - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь выяснить, как сопоставить общий файловый ресурс с конкретным пользователем, которого я создал, используя скрипт Powershell, который предназначен для учетной записи службы. В результате моя учетная запись службы должна иметь доступ к пути UN C по адресу \\ storageaccount.file.core. windows .net \ share "

Ниже описано, как создать службу. учетная запись через поставщика PowerShell. Packer.

$password = ConvertTo-SecureString "ServiceAccountPassword" -AsPlainText -Force
New-LocalUser "ServiceAccount" -Password $password -FullName "ServiceAccount"
Add-LocalGroupMember -Group "Administrators" -Member "ServiceAccount"

Поскольку Packer выполняет код Powershell, используя пользователя, сгенерированного Packer, я создаю запланированное задание для запуска пакетного файла при запуске из учетной записи SYSTEM.

"net use Z: \\storageaccount.file.core.windows.net\share azurestorageaccesskey /user:Azure\storageaccount /persistent:yes" | Out-File -FilePath "C:\MapAzureFileShare.bat" -Encoding "ASCII"
$action = New-ScheduledTaskAction -Execute "C:\MapAzureFileShare.bat"
$trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay 00:00:30
$settings = New-ScheduledTaskSettingsSet -Compatibility "Win8"
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType "ServiceAccount" -RunLevel "Highest"
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings -Description "Map Azure file share at startup"
Register-ScheduledTask -TaskName "MapAzureFileShare" -InputObject $task

Приведенный ниже скрипт приводит к созданию сетевого диска для всех пользователей, к сожалению, сетевой диск является отключенным диском и недоступен при входе в систему в качестве учетной записи службы, которую я только что создал. Было бы сказано: «Имя пользователя или пароль неверны».

Я также пытался создать запланированное задание для запуска в качестве созданного пользователя.

$action = New-ScheduledTaskAction -Execute "C:\MapAzureFileShare.bat"
$trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay 00:00:30
$settings = New-ScheduledTaskSettingsSet -Compatibility "Win8"
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings 
$settings -Description "Map Azure file share at startup"
Register-ScheduledTask -TaskName "MapAzureFileShare" -InputObject $task -User "ServiceAccount" -Password "ServiceAccountPassword"

Ничто не отображается и не отображается Кажется, что-нибудь случится, если я вручную запустите эту запланированную задачу. НО, если я переключу вышеуказанную запланированную задачу на Запускать только при входе пользователя в систему и выполню задачу вручную, карта сети будет создана.

Если я попытаюсь запустить командный файл как пользователя, которого я только что создал, файловая папка сопоставлена ​​просто отлично.

Могу ли я попробовать еще что-нибудь?

1 Ответ

0 голосов
/ 13 января 2020

Мне удалось выяснить, как создать сетевое сопоставление с помощью сценариев и сохранить его.

Таким образом, вместо того, чтобы делать это по кругу, используя планировщик задач для запуска в качестве удостоверения, я смог просто использовать PsExe c для запуска в качестве учетной записи, которую я хотел использовать.

Сначала создайте два пакетных файла, один для сохранения учетных данных Windows в учетной записи, с которой я хочу сопоставить, и один для фактического сопоставления.

echo "cmdkey /add:storageaccount.file.core.windows.net /user:Azure\storageaccount /pass:serviceaccountpassword" | Out-File -Append -FilePath "C:\Credential.bat" -Encoding "ASCII"
echo "net use Z: \\storageaccount.file.core.windows.net\share /persistent:yes" | Out-File -Append -FilePath "C:\Map.bat" -Encoding "ASCII"

Затем я выполняю пакетные файлы в качестве учетной записи, которая Я хочу сопоставить сетевой файловый ресурс через PsExe c. Я не буду вдаваться в подробности того, как я автоматизировал установку этого.

Подробнее https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

.\PsExec.exe -u "ServiceAccount" -p "ServiceAccountPassword" -h "C:\Credential.bat" /accepteula
.\PsExec.exe -u "ServiceAccount" -p "ServiceAccountPassword" -h "C:\Map.bat" /accepteula

Теперь есть хитрая проблема, которая заняла у меня некоторое время и благодаря очень полезной статье, чтобы выяснить. С версией 1809 Windows 10 (октябрь 2018). Карта сети не подключается автоматически, даже если карта сети существует и учетные данные существуют. Я решил использовать Windows 10 1803 в качестве базового образа, который позволяет автоматически подключать диски при раскрутке виртуальной машины.

Дополнительная информация http://woshub.com/could-not-reconnect-mapped-network-drives/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...