2012-11-14 95 views
0

所以我有這個可愛的腳本,將在SCCM 2012中創建文件夾和驅動程序包,它創建了文件夾和驅動程序包,但我無法解決如何將它們放在正確的文件夾中。我認爲PkgFlags會這樣做,但似乎什麼都不做,我找不到一個函數來移動包。Powershell SCCM 2012移動驅動程序包

我已經爲此工作了好幾天,並得到無處

請幫助

$SCCMSiteCode = Read-Host "SCCM Site Code" 
$PackageNamePath = Read-Host "Driver Package Original Path" 
$PackageSourcePath = Read-Host "Driver Package Source Path" 
$FolderArray1 = Get-ChildItem -Path "$PackageNamePath" 

foreach ($FolderList1 in $FolderArray1) 
{ 
if (($FolderList1.name -Like "Server*") -or ($FolderList1.name -Like "Windows*")) 
    { 
    $Argument1 = @{Name = "$FolderList1"; ObjectType = 23; ParentContainerNodeId = 0} 
    Set-WmiInstance -Namespace "root\sms\site_$SCCMSiteCode" -Class "SMS_ObjectContainerNode" -Arguments $Argument1 
    $GetID1 = Get-wmiObject -Namespace root\SMS\site_$SCCMSiteCode -Query "Select name,containernodeid from SMS_ObjectContainerNode" | select name,ContainerNodeID | Where-Object {$_.Name -eq $FolderList1} 
    $FolderArray2 = Get-ChildItem -Path "$PackageNamePath\$FolderList1" 
    foreach ($FolderList2 in $FolderArray2) 
     { 
     if (($FolderList2.name -NotLike "Server*") -or ($FolderList2.name -NotLike "Windows*")) 
      { 
      $DateTime = get-date -Format yyyy.MM.dd-hh.mm.ss 
      $Milliseconds = (get-date).millisecond 
      $FullDateTime = "$DateTime.$Milliseconds" 
      New-Item -ItemType Directory -Path "$PackageSourcePath\$FullDateTime" 
      $PackageName = "$FolderList2 - $FolderList1" 
      $Argument2 = @{Name = "$PackageName"; PkgSourcePath = "$PackageSourcePath\$FullDateTime"; PkgSourceFlag = 2; PkgFlags = $GetID1.ContainerNodeID} 
      Set-WmiInstance -Namespace "root\sms\site_$SCCMSiteCode" -Class "SMS_DriverPackage" -Arguments $Argument2 
      } 
     } 
    } 
} 

回答

1

如果你在談論SCCM本身的文件夾,裏面是你需要叫SMS_ObjectContainerItem另一個WMI類。它主要是告訴司機去哪個文件夾中

在2012年我還沒有真正的腳本,但是在腳本中我寫的創建廣告,我有一個看起來像這樣的代碼:

#This gets the folder from wmi. $advContName is the name of the folder I want the ADV to end up in 
$advContainer = gwmi -name root\sms\site_ia1 -computer itsnt353 -query "Select * from SMS_ObjectContainerNode WHERE Name='$advContName' AND ObjectType='3'" 

$moveADV = ([WMIClass]\\itsnt353\root\sms\site_ia1:SMS_ObjectContainerItem").CreateInstance() 
$moveADV.InstanceKey = $advID 
$moveADV.ObjectType = 2; 
$moveADV.ContainerNodeID = $advContainer.ContainerNodeID 
$moveADV.Put() 

我希望這有幫助。

相關問題