У меня есть сценарий, который я написал, который обращается к удаленному или локальному компьютеру, захватывает переменные среды и помещает их в файл.
проблема в том, что у меня есть внутренний и внешний хосты. Каждое имя хоста будет заканчиваться либо INT, либо EXT. если команда выполняется на каком-либо хосте с именем EXT, ее необходимо будет снабдить моим объектом PSCredential. все другие хосты не будут работать, если используются учетные данные.
Моя проблема заключается в том, как определить, имеет ли имя хоста "EXT"
в имени или нет.
если я помещу нижеприведенное в ISE, это даст мне true / false и работает нормально,
Но если эта переменная заполняется из параметра, когда сценарий называется $ test, в конечном итоге он становится тем именем хоста, которое было введено.
$compuername = "HOSTNAME1ext"
$test = $compuername -like "*ext"
if ($test -eq $true) {Write-Host "yes"} else {Write-Host "no"}
yes
Но когда он используется таким образом, он не работает
[cmdletbinding()]
param(
[Parameter(Mandatory=$true)]
[string[]]$ComputerName = $env:ComputerName,
[string]$Name
)
$test = $ComputerName -like "*ext"
if ($test -eq $true) {
$UNPASSWORD = Get-Credential -UserName "$ComputerName\ACCOUNT" -message "Enter the Password for the ACCOUNT Account";$EnvObj = @(Get-WMIObject -Class Win32_Environment -ComputerName $ComputerName -Credential $UNPASSWORD -EA Stop)
} else {$EnvObj = @(Get-WMIObject -Class Win32_Environment -ComputerName $ComputerName -EA Stop)}
когда это сделано, $ test возвращается после ввода имени хоста, а не True или False.