Это ...
Inspect-ProductionHost ($ DoDebug)
... это не то, как вы используете переключатель.Позже у вас появится опция.
. \ Inspect-ProductionHost -DoDebug
Кроме того, для коммутатора они так, как вы его используете, это ...
if ($ DoDebug -eq $ True)
... на самом деле не требуется.Это может быть просто так ...
if ($ DoDebug)
Что касается этого ... "• Системный администратор вставляет скрипт в окно RDP / Remote Desktop. Он выполняется немедленно"
Если это не будет вставлено в экземпляр PowerShell ConsoleHost, который должен быть запущен после входа в цель RDP, то нет, этого не произойдет.
Этим усилием вы просто вставляете необработанный код в ConsoleHost и запускаете его при нажатии клавиши ввода.Вставка кода, не запускает код.Интерактивное клавиатурное действие все еще требуется.
Вы действительно должны скопировать сценарий в расположение RDP и попросить администраторов запустить его с хоста PowerShell, вместо этой операции вставки копии.Таким образом, вы можете получить запуск или без переключателя отладки, который вы пытаетесь использовать.
В этом усилии копирования и вставки, которое все еще требует интерактивного шага, для того, чтобы произошла отладка, вы должны сделать этоОбязательный параметр с логическим параметром.
Итак, это ваш второй параметр
3. Запустите скрипт из командной строки. \ Inspect-ProductionHost 4. Запустите скрипт из командной строки. \ Inspect-ProductionHost -DoDebug
... это самый разумный способ сделать это.
Более простой способ, если только у вас не запущен консольный хост PowerShell, автоматически запускающийся при входе в цель RDP, он должен бытьзапускается вручную, и код запускается вручную.
Другой вариант - скопировать сценарий в цель RDP, использовать сценарий входа в систему, чтобы запустить его, и запросить сценарий для запуска отладки, этот логический ответ.
function Inspect-ProductionHost()
{
param ([switch]$DoDebug)
if($DoDebug -eq $True)
{
Get-DebugData
Write-output $DebugData
}
write-output "Testing Server"
Test-Connection -ComputerName $env:COMPUTERNAME
}
Inspect-ProductionHost
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
Inspect-ProductionHost($DoDebug)
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
Inspect-ProductionHost -DoDebug
Get-DebugData : The term 'Get-DebugData' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At line:7 char:9
+ Get-DebugData
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-DebugData:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
function Inspect-ProductionHost()
{
param ([switch]$DoDebug)
if($DoDebug)
{
Get-DebugData
Write-output $DebugData
}
write-output "Testing Server"
Test-Connection -ComputerName $env:COMPUTERNAME
}
Inspect-ProductionHost
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
Inspect-ProductionHost($DoDebug)
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
Inspect-ProductionHost -DoDebug
Get-DebugData : The term 'Get-DebugData' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At line:7 char:5
+ Get-DebugData
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-DebugData:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0.... fe80::b812:f23d:94b3:33e9%4 32 0
Если вы действительно хотите сделать эту операцию копирования-вставки, что опять-таки просто странная вещь, то это не обязательно должно бытьфункция.Просто скопируйте и вставьте приведенное ниже в консоль таким образом.
param
(
[Parameter(Mandatory=$true)]
[ValidateSet('True','False')]
[string]$DoDebug
)
if($DoDebug -eq 'True')
{
Get-DebugData
Write-output $DebugData
}
write-output "Testing Server"
Test-Connection -ComputerName $env:COMPUTERNAME
cmdlet at command pipeline position 1
Supply values for the following parameters:
DoDebug: false
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
param
(
[Parameter(Mandatory=$true)]
[ValidateSet('True','False')]
[string]$DoDebug
)
if($DoDebug -eq 'True')
{
Get-DebugData
Write-output $DebugData
}
write-output "Testing Server"
Test-Connection -ComputerName $env:COMPUTERNAME
cmdlet at command pipeline position 1
Supply values for the following parameters:
DoDebug: true
Get-DebugData : The term 'Get-DebugData' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At line:10 char:5
+ Get-DebugData
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-DebugData:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Testing Server
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0
WS01 WS01 10.0.0... fe80::b812:f23d:94b3:33e9%4 32 0