我想将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文件共享,并将处理后的站点附加到其中。到目前为止,我看到了两个选项,但它们似乎都不对:
$env:TEMP
,完成后追加并上传:我
如果中途失败,将会错过所有完成的网站$env:TEMP
,在每个站点之后追加并上传:这将使处理过程变慢,并导致大量不必要的数据加载还有更好的选择吗?我可以直接从Azure PowerShell Runbook写入Azure文件共享上的文件吗?
答案 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()
实现自动化:
以前,文件的内容是“ hello !!!”如您所见,仅内容已写入文件。希望能帮助到你 。