我有一个脚本 - Master.ps1:
Get-ClusterResource "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="xx.xx.x.xxx";"Network"="Cluster Network 1";"SubnetMask"="zzz.zzz.zzz.zzz"};
Get-ClusterResource "SQL IP Address 1 (Host-Name-SQL)" | Set-ClusterParameter -Multiple @{"Address"="xx.xx.x.yyy";"Network"="Cluster Network 1";"SubnetMask"="zzz.zzz.zzz.zzz"};
Start-ClusterResource -Name "CLuster IP Address";
Start-ClusterResource -Name "CLuster Name";
Start-ClusterResource -Name "SQL Server" -Wait 0;
Start-ClusterResource -Name "SQL Server Agent"
我还有一个带有参数的文件 PS_Param.txt:
param(
$ClusterIP="CLuster IP Address",
$Address1="xx.xx.x.xxx",
$Network1="Cluster Network 1",
$SubnetMask1="zzz.zzz.zzz.zzz",
$SQLServer="SQL IP Address 1 (Host-Name-SQL)",
$Address2="xx.xx.x.yyy",
$Network2="Cluster Network 1",
$SubnetMask2="zzz.zzz.zzz.zzz"
)
我创建了一个新脚本 - Master-Param.ps1:
param(
[string]$ClusterIP,
[string]$Address1,
[string]$Network1,
[string]$SubnetMask1,
[string]$SQLServer,
[string]$Address2,
[string]$Network2,
[string]$SubnetMask2
)
Get-ClusterResource $ClusterIP | Set-ClusterParameter -Multiple @{"Address"=$Address1;"Network"=$Network1;"SubnetMask"=$SubnetMask1};
Get-ClusterResource $SQLServer | Set-ClusterParameter -Multiple @{"Address"=$Address2;"Network"=$Network2;"SubnetMask"=$SubnetMask2};
Start-ClusterResource -Name "CLuster IP Address";
Start-ClusterResource -Name "CLuster Name";
Start-ClusterResource -Name "SQL Server" -Wait 0;
Start-ClusterResource -Name "SQL Server Agent"
所以,如果我像这样运行它就可以了:
Master-Param.ps1 "Cluster IP Address" "xx.xx.x.xxx" "Cluster Network 1" "zzz.zzz.zzz.zzz" "SQL IP Address 1 (Host-Name-SQL)" "xx.xx.x.yyy" "Cluster Network 1" "zzz.zzz.zzz.zzz" -Verb RunAs -Force
我想将参数的实际值从 PS_Param.txt 直接传递到 Master-Param.ps1,因此我不必在命令行中列出所有值,并且如果有任何更改(例如 IP 或名称),我只有一个 txt 文件要编辑。
我真的很感激我能得到的任何帮助。
我真的找不到任何关于如何完成我想做的事情以及是否可能的信息。 我将不胜感激任何帮助或可能为我指明正确的方向。
将
PS_Param.txt
更改为 PS_Param.psd1
或 PS_Param.ps1
并将结构从 param
块更改为单个哈希表:
@{
ClusterIP = 'CLuster IP Address'
Address1 = 'xx.xx.x.xxx'
Network1 = 'Cluster Network 1'
SubnetMask1 = 'zzz.zzz.zzz.zzz'
SQLServer = 'SQL IP Address 1 (Host-Name-SQL)'
Address2 = 'xx.xx.x.yyy'
Network2 = 'Cluster Network 1'
SubnetMask2 = 'zzz.zzz.zzz.zzz'
}
Import-PowerShellDataFile
获取参数,然后通过 hashtable splatting 调用脚本绑定参数
$myParams = Import-PowerShellDataFile path\to\PS_Param.psd1
Master-Param.ps1 @myParams