записать в текстовый файл на общей папке Azure - PullRequest
0 голосов
/ 07 октября 2019

Я хотел бы переместить сценарий ps в Azure для запуска в качестве runbook. Он в основном проверяет все новые сайты SharePoint и проверяет, соответствуют ли они определенным критериям, например, включает контроль версий, если он не установлен.

Сценарий работает следующим образом:

$sitesdonelist = "c:\log.txt"
$sitesdone = get-content -Path $sitesdonelist

foreach($sitecoll in $sitecollections) {
 $currentsite = $sitecoll.Url
 if ($sitesdone -inotcontains $currentsite) {
 checksite
 add-content -Path $sitesdonelist -Value $sitecoll.Url
 }
}

Я хотел бы, чтобы этот код работалв Azure, и часть этого состоит в том, чтобы переместить список выполненных сайтов в общий файловый ресурс Azure и добавить к нему обработанные сайты. Пока я вижу два варианта, и ни один из них не кажется правильным:

  1. Загрузите файл в $env:TEMP, добавьте и загрузите на финише: я пропущу все готовые сайты, если что-то не получится на полпути
  2. Загрузите файл в $env:TEMP, добавляйте и загружайте после каждого сайта: замедлит процесс и вызовет много ненужной загрузки данных

Есть ли лучший вариант? Можно ли выполнить запись непосредственно в файл в общей папке Azure из книги запусков Azure PowerShell?

1 Ответ

0 голосов
/ 14 октября 2019

Если вы хотите записать что-либо в виде журнала в файл в общей папке Azure из Runbook Azure Automation, пожалуйста, попробуйте команду PS ниже:

    $appid = "<your appliaction ID>"
    $passwd = "<your Azure AD application Client secret>"
    $tenantId= "<your tenant ID>"
    $secpasswd = ConvertTo-SecureString -String $passwd -AsPlainText -Force
    $cred = New-Object Management.Automation.PSCredential ($appid, $secpasswd)
    Connect-AzAccount -ServicePrincipal -Credential $cred -Tenant $tenantId

    $fileName = "<file name,including path>"
    $storageacc =  Get-AzStorageAccount -ResourceGroupName <resource group name> -Name <storage account name> 
    $file = (Get-AzStorageFile -ShareName qsfileshare -Context $storageacc.Context -Path $fileName)[0]

    $content = "content you want to write"

    $file.UploadTextAsync($file.DownloadTextAsync().GetAwaiter().GetResult() + $content).GetAwaiter().GetResult()
#get the content of the file that we write.
    $file.DownloadTextAsync().GetAwaiter().GetResult() 

Результат автоматизации:

enter image description here

Ранее содержимое файла было "привет !!!"только, как вы можете видеть, содержимое было записано в файл. Надеюсь, это поможет .

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