Windows 清除Powershell存储的临时项
我们使用此脚本尝试从一些服务器获取信息。我遇到的问题是脚本以某种方式“保存”了最后一个服务器IP,所以当列表中的下一个服务器无法访问时,我们仍然会从上一个IP获得“成功”响应。我在每次测试后都尝试使用Windows 清除Powershell存储的临时项,windows,powershell,Windows,Powershell,我们使用此脚本尝试从一些服务器获取信息。我遇到的问题是脚本以某种方式“保存”了最后一个服务器IP,所以当列表中的下一个服务器无法访问时,我们仍然会从上一个IP获得“成功”响应。我在每次测试后都尝试使用Clear Item变量:command,但它似乎没有释放值 $enddate = (Get-Date).tostring("yyyyMMdd") $filename_SRM = 'C:\Scripts\' + $enddate + '_SRM_Scan.csv' $compArray = get
Clear Item变量:command
,但它似乎没有释放值
$enddate = (Get-Date).tostring("yyyyMMdd")
$filename_SRM = 'C:\Scripts\' + $enddate + '_SRM_Scan.csv'
$compArray = get-content C:\Scripts\Servers.txt
foreach($strComputer in $compArray)
{
$ErrorActionPreference = “SilentlyContinue”
$ping = new-object system.net.networkinformation.ping
$ping.send(“$strComputer”) | Where-Object{$_.Name -eq 'Address'}
$pingreturns = $ping.send(“$strComputer”).Status
$socket = new-object Net.Sockets.TcpClient
$port = 135 #445
$socket.Connect($strComputer, $port)
$Network = Get-WMIObject -class Win32_NetworkAdapterConfiguration -Computername $strComputer | `
Where-Object {$_.IPEnabled -match "True"} | `
Select-Object -property DNSHostName,@{N="DNSServerSearchOrder";
E={"$($_.DNSServerSearchOrder)"}},
@{N='IPAddress';E={$_.IPAddress}}
$IP = [System.Net.Dns]::GetHostAddresses(“$strComputer”)
if ($socket.Connected)
{
$Netlogon = Get-WMIObject Win32_Service -ComputerName $strComputer | Where-Object{$_.Name -eq 'Netlogon'}
if ($Netlogon) {
$OS = Get-WmiObject -class Win32_OperatingSystem -computername $strComputer
$services = Get-WMIObject -class Win32_Service -ComputerName $strComputer
"$strComputer ; $pingreturns ; connected ; $($OS.CSName) ; $($Network.IPAddress) "
}else{
"$strComputer ; $pingreturns ; WMI Unavailable ; ; $IP"
}
}
if (!$socket.Connected)
{
echo "$strComputer ; $pingreturns ; Unable to connect ; ; $IP"
}
$socket.Close()
}
请尝试使用语法
$Variable=$null
,而不是清除项目
。两者都可以正常工作。当我运行它时,这工作正常。在$Network=$null
行之前添加一行$Network=Get WMIObject…
。您试图清除的变量是什么?我在您的代码示例中没有看到清除项
。