• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

SCCM2012 Powershell-Befehle PS-Drive wird nicht gefunden

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.757
Ort
in der Zukunft
Da es div. Leute im i-net gibt die dafür eine Lösung suchen - und ich bis heute Nachmittag das selbe Problem hatte - hier die Lösung:

Insofern man versucht über WinRM / Remote Powershell auf Befehle des SCCM2012 zuzugreifen, kann es passieren das die das passende PS-Drive nicht geladen wird
cd / set-location sitename:
cd : Cannot find drive. A drive with the name 'sitename' does not exist.
+ CategoryInfo : ObjectNotFound: (sitename:String) [Set-Location], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

Das liegt daran das beim Laden der SCCM2012-Module in der Powershell
import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1')
eigentlich aus einem Reg-Key ausgelesen wird wie der SCCM2012-Server heißt und welchen Site-Code die zu administrierende Site hat.

Insofern nun der Benutzer mit welchem der Befehl ausgeführt wird niemals die SCCM2012 Console auf dem Server auf welchem der Befehl ausgeführt wird gestartet hat, existieren die Informationen in der Registry nicht. Lösung wäre also den Benutzer die Console auf dem Server ausführen zu lassen (finde ich aber persönlich sehr unschön ;D )

Alternativ erstellen wir einfach die benötigten Registry-Keys.

Bei der Verbindung zu einem Computer per WinRM wird automatisch ein Profil auf dem Rechner angelegt, somit existiert auch der passende Reg-Hive HKCU:
Enter-PSSession -Computername Hostname

nun muss das Script ConfigurationManager.psd1 welches oben bereits beispielhaft geladen wurde angepasst werden. Das Original Script ist mit einem Zertifikat versehen, das man diesem Zertifikat vertraut müsste man beim ersten Aufruf bestätigen (Dies erscheint jedoch beim Ausführen über WinRM nicht).
Daher löschen wir das Zertifikat aus der psd1:
@{NestedModules = @(
# C# Snap-Ins
"AdminUI.PS.Provider.dll",
"AdminUI.PS.HS.dll",
"AdminUI.PS.Rba.dll",
"AdminUI.PS.AppModel.dll",
"AdminUI.PS.Deployments.dll",
"AdminUI.PS.AssetIntelligence.dll",
"AdminUI.PS.Alerts.dll",
"AdminUI.PS.EP.dll",
"AdminUI.PS.AppMan.dll",
"AdminUI.PS.Sum.dll",
"AdminUI.PS.Content.dll",
"AdminUI.PS.Osd.dll",
"AdminUI.PS.Certificates.dll",
"AdminUI.PS.ClientStatus.dll",
"AdminUI.PS.ClientOperations.dll",
"AdminUI.PS.ClientSettings.dll",
"AdminUI.PS.Collections.dll",
"AdminUI.PS.Oob.dll",
"AdminUI.PS.SystemStatus.dll",
"AdminUI.PS.Dcm.dll",
"AdminUI.PS.Migration.dll",
"AdminUI.PS.DatabaseReplication.dll",
"AdminUI.PS.Accounts.dll",
"AdminUI.PS.CalTracking.dll",
"AdminUI.PS.Common.dll",
"AdminUI.PS.TypeAdapter.dll"
"AdminUI.PS.Reporting.dll"
)
#Required assemblies for type adapter
RequiredAssemblies= @("AdminUI.PS.TypeAdapter.dll",
"Microsoft.ConfigurationManagement.ManagementProvider.dll",
"AdminUI.WqlQueryEngine.dll")
# Location from which to download updateable help
HelpInfoURI = 'http://go.microsoft.com/fwlink/?LinkId=301426'
# This GUID is used to uniquely identify this module.
GUID = '7F590131-5253-4425-8B32-EEAB51A4C393'
# The minimum version of PowerShell needed to use this module.
PowerShellVersion = '3.0'
# The CLR version required to use this module.
CLRVersion = '4.0'
# The types files (.ps1xml) loaded by this module.
TypesToProcess = @("Microsoft.ConfigurationManagement.PowerShell.Types.ps1xml", "CalTracking.Types.ps1xml")
# The format files (.ps1xml) loaded by this module.
FormatsToProcess = 'CalTracking.format.ps1xml'
# Lists additional items like icons, etc. that the module will use.
FileList = @("AdminUI.PS.Misc.dll-Help.xml",
"AdminUI.PS.Provider.dll-Help.xml",
"AdminUI.PS.HS.dll-Help.xml",
"AdminUI.PS.Rba.dll-Help.xml",
"AdminUI.PS.AppModel.dll-Help.xml",
"AdminUI.PS.Deployments.dll-Help.xml",
"AdminUI.PS.AssetIntelligence.dll-Help.xml",
"AdminUI.PS.Alerts.dll-Help.xml",
"AdminUI.PS.EP.dll-Help.xml",
"AdminUI.PS.AppMan.dll-Help.xml",
"AdminUI.PS.Sum.dll-Help.xml",
"AdminUI.PS.Content.dll-Help.xml",
"AdminUI.PS.Osd.dll-Help.xml",
"AdminUI.PS.Certificates.dll-Help.xml",
"AdminUI.PS.ClientStatus.dll-Help.xml",
"AdminUI.PS.ClientOperations.dll-Help.xml",
"AdminUI.PS.ClientSettings.dll-Help.xml",
"AdminUI.PS.Collections.dll-Help.xml",
"AdminUI.PS.Oob.dll-Help.xml",
"AdminUI.PS.SystemStatus.dll-Help.xml",
"AdminUI.PS.Dcm.dll-Help.xml",
"AdminUI.PS.Migration.dll-Help.xml",
"AdminUI.PS.DatabaseReplication.dll-Help.xml",
"AdminUI.PS.Accounts.dll-Help.xml",
"AdminUI.PS.CalTracking.dll-Help.xml",
"AdminUI.PS.Common.dll-Help.xml",
"AdminUI.PS.TypeAdapter.dll-Help.xml"
"AdminUI.PS.Reporting.dll-Help.xml"
)

# The author of this module.
Author = 'Microsoft Corporation'

# The company or vendor for this module.
CompanyName = 'Microsoft Corporation'

# The copyright statement for this module.
Copyright = '(c) Microsoft Corporation. All rights reserved.'

# The version of this module.
ModuleVersion = '5.00.7958.1000'

}

Als nächstes habe ich mir ein kleines Powershell-Script erstellt welches ich zwischen dem Verminden per WinRM und dem Laden der SCCM2012 Module aufrufe:

# Function From Carbon PowerShell Modulefunction Test-RegistryKeyValue
{
<#
.SYNOPSIS
Tests if a registry value exists.


.DESCRIPTION
The usual ways for checking if a registry value exists don't handle when a value simply has an empty or null value. This function actually checks if a key has a value with a given name.


.EXAMPLE
Test-RegistryKeyValue -Path 'hklm:\Software\Carbon\Test' -Name 'Title'


Returns `True` if `hklm:\Software\Carbon\Test` contains a value named 'Title'. `False` otherwise.
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]
# The path to the registry key where the value should be set. Will be created if it doesn't exist.
$Path,


[Parameter(Mandatory=$true)]
[string]
# The name of the value being set.
$Name
)


if( -not (Test-Path -Path $Path -PathType Container) )
{
return $false
}


$properties = Get-ItemProperty -Path $Path
if( -not $properties )
{
return $false
}


$member = Get-Member -InputObject $properties -Name $Name
if( $member )
{
return $true
}
else
{
return $false
}


}


if (Test-RegistryKeyValue -Path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU\1 -Name SiteCode) {} else {
New-Item -path HKCU:\Software\Microsoft -Name ConfigMgr10
New-Item -path HKCU:\Software\Microsoft\ConfigMgr10 -Name AdminUI
New-Item -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI -Name MRU
New-Item -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU -Name 1
New-ItemProperty -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU\1 -Name ServerName -Value Server
New-ItemProperty -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU\1 -Name SiteCode -Value SiteCode
New-ItemProperty -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU\1 -Name SiteName -Value "Name der Site"
New-ItemProperty -path HKCU:\Software\Microsoft\ConfigMgr10\AdminUI\MRU\1 -Name SecurityType -Value 0 -PropertyType "DWord"
}

Achtung: die Roten Eigenschaften müssen an die eigene Umgebung angepasst werden, die passenden Werte einfach aus der Registry eines Benutzers auslesen welcher die ConfigMgr Console schon einmal gestartet hat.

zusammengefasst noch mal mein Aufruf mit dem ich eine Verbindung zum SCCM-Server herstellt um im Anschluss beliebige ConfigMgr-CMDlets auszuführen:

Enter-PSSession -Computername Hostname
.\sccm_regkey.ps1 | Out-Null
import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1')
cd $Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5)
CD WK1:
 
Zuletzt bearbeitet:
Oben