我需要以域管理员对目标虚拟机自动执行脚本。 问题是,虚拟机没有公开。 我也因为它已被写入由团队成员不应该重写剧本,我宁愿提供我的团队,对他们的工作,是自动化,而不是每次都重写了剧本的解决方案。 当前进程看起来像THI
- VSTS启动与Azure的PowerShell脚本command1.ps1构建过程
- Command1.ps1安装Azure的自定义脚本扩展目标VM
- 自定义脚本扩展下载并执行运行command3.ps1以域管理员command2.ps1
我遇到的问题是我无法从VSTS传递凭据command2.ps1请推荐我,我应该怎样做正确。 选项,我发现:
不知道这是可能的VSTS https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/
添加IP公网地址到目标VM,配置WinRM的,执行command2.ps1,删除公网IP地址
我敢肯定有这样做的更好的方法。 command1.ps1:
param
(
[Parameter(Mandatory)]
[String]$resourceGroupName,
[Parameter(Mandatory)]
[String]$targetVMname,
[Parameter(Mandatory)]
[String]$vmLocation,
[Parameter(Mandatory)]
[String]$FileUri,
[Parameter(Mandatory)]
[String]$nameOfTheScriptToRun,
[Parameter(Mandatory)]
[String]$customScriptExtensionName,
[Parameter(Mandatory)]
[String]$domainAdminName,
[Parameter(Mandatory)]
[String]$domainAdminPassword
)
$domainAdminPasswordSecureString = ConvertTo-SecureString -String $domainAdminPassword -AsPlainText -Force
$DomainCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $domainAdminName, $domainAdminPasswordSecureString
Set-AzureRmVMCustomScriptExtension -Argument "-DomainCredentials $DomainCredentials" `
-ResourceGroupName $resourceGroupName `
-VMName $targetVMname `
-Location $vmLocation `
-FileUri $FileUri `
-Run $nameOfTheScriptToRun `
-Name $customScriptExtensionName
Remove-AzureRmVMCustomScriptExtension -Force `
-ResourceGroupName $resourceGroupName `
-VMName $targetVMname `
-Name $customScriptExtensionName
command2.ps1:
param
(
[Parameter(Mandatory)]
[System.Management.Automation.PSCredential]$DomainCredentials
)
$url = "https://raw.githubusercontent.com/x/command2.ps1"
$output = "C:\command2.ps1"
Invoke-WebRequest -Uri $url -OutFile $output
Start-Process -FilePath powershell.exe -ArgumentList $output -Credential $DomainCredentials