Проблема должна быть либо в разрешениях (которые, как я полагаю, у вас есть, поскольку нет явных сообщений об ошибках), в обновлении проблемы или в Get-Content
и структуре вашего файла.
Для того, чтобы Get-Content
работал таким образом, каждый компьютер на отдельной строке. e.g.:
MyComputer1
MyComputer2
Еще один шаг устранения неполадок - попробуйте добавить в Write-Host $computername
записи, чтобы убедиться, что вы проходите правильно .:
$file = Get-Content c:\PSscripts\regchange\computers.txt
foreach ($computername in $file){
$PingStatus = Gwmi Win32_PingStatus -Filter "Address = '$computername'" | Select-Object StatusCode
If ($PingStatus.StatusCode -eq 0){
Write-Host "$computername set"
}
else {
Write-Host "$computername unreachable"
}
}
Вы также можете подтвердить, добавив $regKey.GetValue
после установки:
$file = Get-Content c:\PSscripts\regchange\computers.txt
foreach ($computername in $file){
$PingStatus = Gwmi Win32_PingStatus -Filter "Address = '$computername'" | Select-Object StatusCode
If ($PingStatus.StatusCode -eq 0){
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computername )
$regKey= $reg.OpenSubKey("System\\CurrentControlSet\\Control\\Terminal Server" ,$true)
$regKey.SetValue("fDenyTSConnections","1",[Microsoft.Win32.RegistryValueKind]::dword)
Write-Host "$computername set to: $($regKey.GetValue("fDenyTSConnections"))"
}
else {
Write-Host "$computername unreachable"
}
}
Вручную установив $computername = "MyComputer"
и запустив код, я могу подтвердить, что код для настройки реестра работает ... Я также могу подтвердить, что удаленное уничтожение вашего доступа RDP к удаленной виртуальной рабочей станции также работает ... и ... так ужасно, как кажется; -)