Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] не корректный вывод переменной (http://forum.oszone.net/showthread.php?t=305776)

Спаситель 22-09-2015 22:41 2556467

не корректный вывод переменной
 
Код:

$SiteServer = aqua
$SiteCode = kei
$CollectionName = test1
$Collection = get-wmiobject -ComputerName $siteServer -NameSpace "ROOT\SMS\site_$SiteCode" -Class SMS_Collection | where {$_.Name -eq "$CollectionName"}
$SMSMemebers = Get-WmiObject -ComputerName $SiteServer -Namespace "ROOT\SMS\site_$SiteCode" -Query "SELECT * FROM SMS_FullCollectionMembership WHERE CollectionID='$($Collection.CollectionID)' order by name" | select Name
foreach ($SMSMemebers in Get-WmiObject -ComputerName $SiteServer -Namespace "ROOT\SMS\site_$SiteCode" -Query "SELECT * FROM SMS_FullCollectionMembership WHERE CollectionID='$($Collection.CollectionID)' order by name" | select Name)
{
$SMSCli = [wmiclass]"\\$SMSMemebers\root\ccm:SMS_Client"
$SMSCli.TriggerSchedule("{00000000-0000-0000-0000-000000000021}")
}

Короче такая вот хрень которая лезет в коллекцию sccm берет от туда значение name компутеров и присваивает его, далее в цикле просто по wmi запускает тригер клиента для связи с sccm

Для проверки до цикла запускаю "выведи мол чего там в коллеции то" $SMSMemebers

Он мне отдает значение
Код:

PS KEI:\> $SMSMemebers

Name                                                                                                                     
----                                                                                                                     
VDA-W81-16                                                                                                               
VDA-W81-6                                                                                                                 
WS3404

далее я радуюсь и запускаю в цикле подключение по строкам и получаю болт причем странный
Код:

Не удается преобразовать значение "\\@{Name=WS3404}\root\ccm:SMS_Client" в тип "System.Management.ManagementClass". Ошибка:
 "Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)"
C:\Users\ii.ps1:10 знак:1
+ $SMSCli = [wmiclass]"\\$SMSMemebers\root\ccm:SMS_Client"

Что такое @{Name=WS3404} и как избавится от этой фигни? ... мне надо чтобы он мне вывел только имена машин и засунул их в переменную .


По итогу
Код:

$SiteServer = 'aqua'
$SiteCode = 'kei'
$CollectionName = 'test1'
$cred = Get-credential
$Collection = get-wmiobject -ComputerName $siteServer -NameSpace "ROOT\SMS\site_$SiteCode" -Class SMS_Collection -Credential $cred | where {$_.Name -eq "$CollectionName"}
foreach ($SMSMemebers in Get-WmiObject -ComputerName $SiteServer -Credential $cred -Namespace "ROOT\SMS\site_$SiteCode" -Query "SELECT * FROM SMS_FullCollectionMembership WHERE CollectionID='$($Collection.CollectionID)' order by name" | Select -Expand Name)
{
$SMSCli = [wmiclass]"\\$($SMSMemebers)\root\ccm:SMS_Client"
$SMSCli.TriggerSchedule("{00000000-0000-0000-0000-000000000021}")
}


corbis 22-09-2015 22:51 2556470

Так работает оператор Select. Просто надо его убрать и использовать $SMSMemebers.name

Kazun 22-09-2015 22:52 2556471

1) $SMSMemebers.Name
[wmiclass]"\\$($SMSMemebers.Name)\root\ccm:SMS_Client"

2) Select -Expand Name

.....order by name" | select -Expand Name


Время: 15:47.

Время: 15:47.
© OSzone.net 2001-