我目前正在创建一个AD脚本,可以获取一台机器的AD组并将它们传输到新机器(如果系统出现故障)。
我设法让脚本出去找到两台机器通过主机名运行的Windows版本,但是我在创建一个'if'语句来比较两个版本的Windows时遇到了问题
这个想法是,如果相同的版本(因此包装版本相同),这些组将被自动复制,但我不能为我的生活找出如何做到这一点。
请考虑以下代码:
function W_version_current
{
$current = Get-WmiObject Win32_OperatingSystem -computer $current_hostname.text | select buildnumber
if ($current -match '7601')
{
"Windows 7"
}
elseif($current -match '2600')
{
"Windows XP"
}
elseif($current -eq $null)
{
"The box is empty"
}
else
{
"Function not supported"
}
}
function W_version_target
{
$target = Get-WmiObject Win32_OperatingSystem -computer $target_hostname.text | select buildnumber
if ($var -match '7601')
{
"Windows 7"
}
elseif($target -match '2600')
{
"Windows XP"
}
elseif($target -eq $null)
{
"The box is empty"
}
else
{
"Function not supported"
}
}
function compare_current_target
{
if(W_version_current -eq W_version_target)
{
"Matching version of Windows detected"
}
else
{
"Versions of Windows do not match"
}
}
现在是否所有变量都无法在函数外部访问?
如果是这样,我还能做什么?
答案 0 :(得分:0)
您可能缺少的是,使用PowerShell操作顺序,您经常需要将函数调用放在括号中。
请改为尝试:
if ((W_version_current) -eq (W_version_target))
{
"Matching version of Windows detected"
}
else
{
"Versions of Windows do not match"
}
要回答您的问题,PowerShell中的范围与大多数其他脚本语言非常相似,例如:在函数中声明的变量不能在它们声明的函数之外使用,除非你将它们声明为全局变量,你可以这样做:
$global:x = "hi"
然后,您可以随时随地使用变量$x
,或者如果您愿意,可以使用$global:x
,它的值为"hi"
。