在天蓝色文件共享上写入文本文件

时间:2019-10-07 11:58:21

标签: powershell azure-powershell azure-runbook

我想将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 PowerShell Runbook写入Azure文件共享上的文件吗?

1 个答案:

答案 0 :(得分:0)

如果要从Azure自动化运行手册中将某些内容作为日志写到Azure文件共享中的文件中,请尝试以下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

以前,文件的内容是“ hello !!!”如您所见,仅内容已写入文件。希望能帮助到你 。