gpt4 book ai didi

powershell - 使用 PowerShell 和 FTP 创建 Azure 网站

转载 作者:行者123 更新时间:2023-12-02 22:22:13 24 4
gpt4 key购买 nike

我需要编写一个 PowerShell 脚本来自动创建 Azure 网站并部署本地文件系统的内容。似乎 Azure PowerShell SDK 没有提供将文件复制到网站的方法,因此我们希望使用 FTP 作为部署方法。

要获取正确的 FTP 端点和凭据,我发现的唯一方法是调用 Azure 管理 Rest API:Get a Site’s Publish Profile .

但此 API 与其他 Azure 管理 API 一样需要证书。我找到了以下教程 Building Real-World Cloud Apps with Windows Azure解释如何获取证书:

$s = Get-AzureSubscription -Current
$thumbprint = $s.Certificate.Thumbprint

不幸的是,当前的 SDK $s.Certificate 似乎始终为 null,因此该属性不存在。如果我手动设置证书指纹,一切都会按预期进行。

您知道如何获取正确的订阅证书吗?或者您是否有一种简单的替代方法可以将本地文件部署到 Azure 网站?

最佳答案

看来现在您可以使用访问证书指纹

$thumbprint = $s.DefaultAccount

而不是

#$thumbprint = $s.Certificate.Thumbprint

似乎 DefaultAccount 的值与证书指纹完全相同。

这里是我获取给定网站的发布配置文件的完整脚本,仅供引用:

Function get-AzureWebSitePublishXml
{
Param(
[Parameter(Mandatory = $true)]
[String]$WebsiteName
)

# Get the current subscription
$s = Get-AzureSubscription -Current
if (!$s) {throw "Cannot get Windows Azure subscription."}

#$thumbprint = $s.Certificate.Thumbprint #this code doesn't work anymore
$thumbprint = $s.DefaultAccount
if (!$thumbprint) { throw "Cannot get subscription cert thumbprint."}

# Get the certificate of the current subscription from your local cert store
$cert = Get-ChildItem Cert:\CurrentUser\My\$thumbprint
if (!$cert) {throw "Cannot find subscription cert in Cert: drive."}

$website = Get-AzureWebsite -Name $WebsiteName
if (!$website) {throw "Cannot get Windows Azure website: $WebsiteName."}

# Compose the REST API URI from which you will get the publish settings info
$uri = "https://management.core.windows.net:8443/{0}/services/WebSpaces/{1}/sites/{2}/publishxml" -f `
$s.SubscriptionId, $website.WebSpace, $Website.Name

# Get the publish settings info from the REST API
$publishSettings = Invoke-RestMethod -Uri $uri -Certificate $cert -Headers @{"x-ms-version" = "2013-06-01"}
if (!$publishSettings) {throw "Cannot get Windows Azure website publishSettings."}

return $publishSettings
}

注意:仅当您使用 Import-AzurePublishSettingsFile 连接到 azure 时才有效

任何人都可以确认使用 DefaultAccount 属性是安全的吗?

更新

如果您使用Kudu API上传您的网站,like this ,您不需要任何证书或发布配置文件。您应该使用 Get-AzureWebsite 读取用户名和密码,主机名就是 yourwebsitename.scm.azurewebsites.net(请注意 scm 段)。我建议使用 Kudu,因为它更加可靠和快速。

关于powershell - 使用 PowerShell 和 FTP 创建 Azure 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com