Функция не работает, хотя переменная выглядит нормально - PullRequest
1 голос
/ 28 мая 2019

Функция должна в конечном итоге сделать так и запустить команду:

Get-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter  'system.web/customErrors'  -name  'mode'

Однако переменная путается с этим добавленным текущим рабочим каталогом и обратной косой чертой:

Get-WebConfigurationProperty : Cannot find path 'C:\Users\username\'MACHINE\WEBROOT\APPHOST\Default Web Site''
because it does not exist

ECHO выглядит хорошо, а также перенаправление в файл также хорошо:

Get-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter  'system.web/customErrors'  -name  'mode'

Пример прогона:

PS C:\temp> Get-Check-Func2 "webcA" "mode" "system.web/customErrors"
'MACHINE/WEBROOT/APPHOST/Default Web Site'
system.web/customErrors
mode

Get-WebConfigurationProperty : Cannot find path 'C:\Users\username\'MACHINE\WEBROOT\APPHOST\Default Web Site''
because it does not exist.
At line:10 char:16
+ ...             Get-WebConfigurationProperty -pspath ` $mypspath ` -filte ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\usern...fault Web Site':String) [Get-WebConfigurationProperty
   ], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.IIs.PowerShell.Provider.GetConfigurationPropertyCommand

Get-WebConfigurationProperty -pspath  'MACHINE/WEBROOT/APPHOST/Default Web Site' -filter  'system.web/customErrors'  -name  'mode'

Пожалуйста, будьте добры, поскольку я новичок в PowerShell.

Исходя из фона korn / bash.

function Get-Check-Func2 {
$a = Get-Website
$myws = $a.Name
$mypspath = 'MACHINE/WEBROOT/APPHOST/' + "$myws"
$mypspath = '''' + $mypspath + ''''
$myfilter = '''' +  $args[2] + ''''
$myname = '''' +  $args[1] + ''''
 echo "$mypspath"
 echo $args[2]
           Get-WebConfigurationProperty -pspath ` $mypspath ` -filter ` $myfilter ` -name ` $myname
     echo "Get-WebConfigurationProperty -pspath ` $mypspath ` -filter ` $myfilter ` -name ` $myname"
     }

Ожидается, что Get-WebConfigurationProperty запустится, но похоже, что переменная испорчена.

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Ваши спины могут быть причиной проблемы.Вместо этого:

Get-WebConfigurationProperty -pspath ` $mypspath ` -filter ` $myfilter ` -name ` $myname

Просто сделайте это:

Get-WebConfigurationProperty -pspath $mypspath -filter $myfilter -name $myname

Или, если вы пытаетесь его мультилинировать, ставьте обратную галочку после каждой пары параметр / вход, например:

Get-WebConfigurationProperty -pspath $mypspath `
                             -filter $myfilter `
                             -name $myname

Еще один популярный вариант предоставления командлету большого количества параметров, который не заканчивается слишком длинной отдельной строкой, - это использование понятия, называемого splatting .Например:

$GetWebConfigPropertyParams = @{
    PSPath = $mypspath
    Filter = $myfilter
    Name = $myname
}
Get-WebConfigProperty @GetWebConfigPropertyParams
0 голосов
/ 30 мая 2019

Похоже, у тебя была правильная идея, Марк ... мои извинения.Также получил некоторый вклад от другого гуру PowerShell :-) Теперь это прекрасно работает!

function Check-Webca-Select {
param(
$WebsitePSPath  = 'MACHINE/WEBROOT/APPHOST/',
$Filter , 
$ComponentName,
$Myexpect
)
 $a = get-website
 $w = $a.name
  foreach ($WebsiteName in $w) {
   $WebsiteFullPath = "{0}{1}" -f $WebsitePSPath,$WebsiteName
   Get-WebConfigurationProperty -PSPath "$WebsiteFullPath" -Filter $Filter -Name $ComponentName | Select-String "$Myexpect"
 }
}

образец exec

Check-Webca-Select -Filter "system.web / customErrors" -ComponentName "режим "-Myexpect" Remoteonly "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...