Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

Send-MailMessage ohne Nutzereingabe

$
0
0

Hallo,

ich möchte mit Send-MailMessage jeden Tag um 18 Uhr eine Email versenden. Dies soll natürlich automatisch passieren (Ohne Nutzereingabe)

$pw = Get-Content D:\X\X\X\regmail.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential "r016225", $pw

Send-MailMessage -Credential $cred -to $sendTo -from $sendFrom -Subject $subject -body $body -Attachment $filepath -encoding ([System.Text.Encoding]::UTF8)

Wenn ich das Teste werde ich allerdings aufgefordert meine Logindaten einzugeben. Da dies später durch den SYSTEM-User jeden Tag um 18 Uhr ausgeführt werden soll, ist das ein Problem.

Wie kann ich das umgehen? Und warum fragt er überhaupt? Ich gebe ihm doch das Passwort und den Namen.

lg Zuyas


Powershell - Excel - Old format or invalid type library

$
0
0

Hallo, ich bin bei meiner Aufgabe kurz vorm Ziel mal wieder auf ein Problem gestoßen.

Als ich mein fertiges Powershell-Script (es erstellt eine Excel-Datei) auf den Server wo es später laufen soll hochgeladen habe, bekam ich beim ausführen den Fehler:

Exception calling "Add" with "0" argument(s): "Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))"

ich habe bereits rausgefunden, dass wenn ich unter Control Panel -> Region and Language -> Formats -> Format: auf "English (United States)" stelle (Ursprünglich stand es auf "German (Germany)") funktioniert es.

Da das Script aber als Scheduled Task von SYSTEM ausgeführt werden soll, hilft mir das leider nicht viel.

Hat jemand eine Idee wie ich es unter SYSTEM zum laufen bekomme?

lg Zuyas

Formular Benutzer anlegen/ändern

$
0
0

Ich schreibe gerade an einem PowerShell Script um Benutzer Daten anzulegen und ändern zu können.

Das Anzeigen vorhandener Benutzer klappt auch super, nur wenn der Benutzer in der AD nicht gefunden wurde und in eine andere Funktion springt habe ich ein Problem.

Wie gehe ich vor:

Es wird ein Formular aufgerufen:

Hier gebe ich den Anmeldenamen ein. Beim Verlassen des Feldes wird der Benutzer in der AD gesucht.

$handler_TB_Anmeldename_Leave= 
{
Try
  { 
   #Fehler abfangen, wenn der Anmeldename nicht gefunden wird. 
   $Script:GetADUserResult = Get-ADUser -Identity $TB_Anmeldename.Text  -Properties Title,Initials,telephoneNumber,otherTelephone,mobile,otherMobile,mail,description,physicalDeliveryOfficeName,EmployeeID,EmployeeNumber,extensionAttribute1,msTSProfilePath,distinguishedName -errorvariable myerrorvariable  
  }
  Catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException]
  {
   # Bei nicht gefundenem Anmeldenamen wird zur Eingabe gesprungen
   Write-Host "Benutzer wird angelegt"
   $SetADUser = @()
   Set-WLUserEingabe
   return;
  }
  Catch 
  {
   Write-Host "Es ist ein unbekannter Fehler aufgetreten!"+$Error[0]
   break
  }
  Finally
  {
   Write-Host "Finally und dann nix"
  }
  Write-Host "Benutzer anzeigen"
  # Wenn der Benutzer vorhanden ist und kein Fehler aufgetreten ist, werden die Attribute angezeigt.
  If (!$myerrorvariable)
  {
   Get-WLUserDaten        
  }
}

Sollte der Benutzer vorhanden sein, dann werden die Attribute, soweit in der AD gepflegt, angezeigt.

Ist der Benutzer nicht vorhanden, dann wird die Funktion Set-WLUserEingabe gesprungen.

In dieser Funktion sollen die Attribute eingetragen werden, bis ein bestimmtes Ereignis eintritt, z.B. klicken auf einen Button Speichern. Zur Zeit soll die Eingabe solange aktiv bleiben, bis das Feld Kartennummer einen bestimmten Wert hat.

function Set-WLUserEingabe()
{
  $TB_UserPrincipalName.Focus()
  Do 
  {
  $SetADUser.Anmeldename = $TB_Anmeldename.Text
  $TB_UserPrincipalName.Text = $TB_Anmeldename.Text+"@WL.ADS"	
  $SetADUser.UserPrincipalName = $TB_UserPrincipalName.Text
  $SetADUser.Title = $TB_Titel.Text
  $SetADUser.GivenName = $TB_Vorname.Text
  $SetADUser.Surname = $TB_Nachname.Text
  $SetADUser.Initials = $TB_Initalen.Text
  $SetADUser.telephoneNumber = $TB_TelefonNr.Text
  $SetADUser.otherTelephone = $TB_TelefonKurzw.Text
  $SetADUser.mobile = $TB_HandyNr.Text
  $SetADUser.otherMobile = $TB_HandyKruzw.Text
  $TB_EMailAdresse.Text = $TB_Vorname.Text+"."+$TB_Nachname.Text+"@westlotto.com"
  $SetADUser.mail = $TB_EMailAdresse.Text
  $SetADUser.physicalDeliveryOfficeName = $TB_Dienstort.Text
  $SetADUser.description = $TB_Beschreibung.Text
  $SetADUser.EmployeeNumber = $TB_MitarbeiterNr.Text
  $SetADUser.EmployeeID = $TB_Kartennr.Text
  Write-Host $SetADUser.Anmeldename
  }until($TB_Kartennr.Text -eq "Schluss")
}

Leider hängt sich das Script in der Do-Until Schleife auf bzw. das Script wird nicht bedienbar! Weiß einer Rat? Oder wo habe ich einen Denk Fehler?

Gruß

Dirk

Zugriff überprüfung

$
0
0

Hallo

Besteht die möglichkeit mit PS ein System zu überprüfen wer daraus zugreift?

Der Script sollte immer laufen und sobald ein anderes System zugreift ( auf das Laufwerk C:\ ) sollte auf der Konsole eine Meldung erscheinen mit der IP Adr., User Name

Script habe ich leider keinen. Weiss leider nicht wo anzufangen :-)

Vielen dank

Grüsse

Ausnahme beim Aufrufen von "InvokeSet" mit 2 Argument(en

$
0
0

Hallo zusammen

Ich habe ein PS Script, das nicht macht was ich will. :-(
Ich möchte mit dem Script bei einer Reihe von Benutzern die Terminal Server Home/Profile Einstellungen mutieren.
Das Script sieht so aus:

Import-Module activedirectory

$Users = import-CSV C:\PS-Test\users.csv

ForEach ($User in $Users){
$Benutzer = $User.samAccountname
$BenutzerDN = Get-ADUser -filter { cn -eq $Benutzer } -SearchBase "ou=prod,dc=domain,dc=local" | select -ExpandProperty DistinguishedName
$Standort = "Haus1"

$user = [ADSI] "LDAP://$BenutzerDN"
$user.psbase.Invokeset("terminalservicesprofilepath","\\domain\$Standort\Profile\$Benutzer\WinTS")
$user.psbase.invokeSet("TerminalServicesHomeDirectory","\\domain\$Standort\Home\$Benutzer")
$user.psbase.invokeSet("TerminalServicesHomeDrive","H:")
 $user.setinfo()
 }

Im CSV habe ich drei Benutzernamen (samAccountName) zum testen eingetragen.
Das ganze Script wird für den ersten Benutzer korrekt verarbeitet.
Beim Durchlauf für den zweiten und dritten Benutzer wird folgende Fehlermeldung ausgegeben.
Ich versteh aber nicht was hier falsch läuft. :-(
Kann mir da jemand weiterhelfen?

testuser003 (das ist der erste User. Hier funktioniert das Script noch richtig)
testuserw709 (das ist der zweite User. Hier funktioniert das Script nicht mehr)
Ausnahme beim Abrufen des Elements "setinfo": "Unbekannter Fehler (0x80005000)"
Bei C:\PS-Test\TS-1User-Mutation.ps1:16 Zeichen:15
+  $user.setinfo <<<< ()
    + CategoryInfo          : NotSpecified: (:) [], ExtendedTypeSystemException
    + FullyQualifiedErrorId : CatchFromBaseGetMember

Ausnahme beim Aufrufen von "InvokeSet" mit 2 Argument(en):  "Unbekannter Fehler (0x80005000)"
Bei C:\PS-Test\TS-1User-Mutation.ps1:17 Zeichen:24
+  $user.psbase.Invokeset <<<< ("terminalservicesprofilepath","\\domain\$Standort\Profile\$Benutzer\WinTS")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Ausnahme beim Aufrufen von "InvokeSet" mit 2 Argument(en):  "Unbekannter Fehler (0x80005000)"
Bei C:\PS-Test\TS-1User-Mutation.ps1:18 Zeichen:24
+  $user.psbase.invokeSet <<<< ("TerminalServicesHomeDirectory","\\domain\$Standort\Home\$Benutzer")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Ausnahme beim Aufrufen von "InvokeSet" mit 2 Argument(en):  "Unbekannter Fehler (0x80005000)"
Bei C:\PS-Test\TS-1User-Mutation.ps1:19 Zeichen:24
+  $user.psbase.invokeSet <<<< ("TerminalServicesHomeDrive","H:")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Ausnahme beim Abrufen des Elements "setinfo": "Unbekannter Fehler (0x80005000)"
Bei C:\PS-Test\TS-1User-Mutation.ps1:20 Zeichen:15
+  $user.setinfo <<<< ()
    + CategoryInfo          : NotSpecified: (:) [], ExtendedTypeSystemException
    + FullyQualifiedErrorId : CatchFromBaseGetMember


Powershell ein "$" Zeichen als Parameter übergeben

$
0
0

Hi, ich übergebe an mein Sevice Prüfskript die Dienste die ich prüfen möchte.

Nun gibt es leider Dienste, die lustigste Sachen in ihren Servicenamen packen.

Bsp.: MSSQL$DATEV_DBENGINE,SQLAgent$DATEV_DBENGINE

Wenn ich diese nun übergebe, erkennt PS hierrin Variablen.

Habe einmal den Teil des Skriptes mit angehongen:

$logfile="C:\service_start.log"
$server=$args[0]
$services=$args[1].split(",")

$result="OK - Service Checks"
$error="0"
$runningservices=""
$runningservices=Get-Service -ComputerName $server

foreach ($i in $services)
{
if ($runningservices.Name.ToLower() -match $i.ToLower())
{

$position=[array]::indexof($runningservices.Name.ToLower(),$i.ToLower())

$chanelname=$runningservices[$position].Name
$chaneldispname=$runningservices[$position].DisplayName

if ($chanelname) {} else {$chanelname=$i}


if ($runningservices[$position].Status -like "Running") 
{
echo "<value>1</value>"

}

else {
echo $i
echo "<value>0</value>"
$error="1"
try {
#
$unixtime=(Get-Date -UFormat %s) -Replace("[,\.]\d*", "")
echo "" >>$logfile
$unixtime24hago=$unixtime-86400

$servicestartlog=Get-Content $logfile

foreach ($i in $servicestartlog)
{
$logvalues=$i.split(":")
#$logvalues
#echo $logvalues[0] $logvalues[2]

if (($logvalues[0] -eq $server) -and ($logvalues[1] -eq $chanelname) -or ($logvalues[0] -eq "" ) )
{

#echo $logvalues[2]
if ($logvalues[2] -gt $unixtime24hago)
{
$mail=$mail+"||"+$i
$sendmail=$sendmail+1
}
else{
$return=Get-Service $chanelname -ComputerName $server | start-service
echo $server":"$chanelname":"$unixtime >>$logfile
}
}
}
if ($sendmail -eq 1) {
Send-MailMessage -To $emailTo -Subject $subject -Body $mail -SmtpServer $smtpServer -From $emailFrom -Priority $priority 
}
}
catch
{
#echo "fehler"
#echo "returncode:" $return
}


$problem="$chanelname,$problem"
$result="Problem with Service: $problem"
}

}

}

if ($error -eq "0")
{
#write-host 0
#write-host "End: ExitCode 0"
exit 0
}
else { 
#write-host "End: ExitCode 1"
echo "<error>1</error>"
exit 1}

Mfg. Chris

PS4 und Get-ADUser -Properties *

$
0
0

Hallo zusammen,

ich teste gerade unter PS4 (Windows 8.1) einige Scripte und stoße bei einem Aufruf auf ein Problem. Bis PS-Version 3 funktioniert nachfolgender Aufruf problemlos. Ab PS-Version 4 stört sich die Powershell an den Properties. Ich könnte das umgehen in dem ich die gewünschten Properties angebe aber den Platzhalter möchte er nicht.

Get-ADUser -Properties * -Filter *

Kennt jemand zufälligerweise den Hintergrund warum das so ist, bzw. ob das wirklich seitens MS gewünscht ist?

Danke im Voraus für eure Mühen


Gruß Alex

do while-Schleife - while Abfrage den Operator als Variable setzen?

$
0
0

Hi zusammen,

als Hobbyprogrammierer habe ich eine einfache, aber für mich aktuell quälende Frage:

kann ich in einer do while Schleife den Operator in der Kondition als Variable setzen?

Konkret habe ich ein Script, welches AD-Gruppen auf einen bestimmten Wert abfragt. Dieser ist z.B. leer, und die Schleife soll solange laufen, bis der Wert (von einer externen Quelle) gefüllt wurde.

Condition: ... while ($ADvalue -eq $null)

Zusätzlich habe ich aber AD-Gruppen, die ich genau andersrum abfragen muss (...solange Wert gefüllt...).

Mein Wunsch wäre also, drei Variablen zu übergeben ("-eq" z.B. als $operator).

Funktioniert das?



AD abfragen nach user wo nur einer Gruppe angehören

$
0
0

Hallo zusammen

Ich habe folgende Problematik, ich soll alle user abfragen die nur und ausschliesslich nur DomänUser sind.

Da ja jeder user eine Domänmember ist aber auch in anderen Gruppen vorhanden sein kann weiss ich nicht wie ich das in Powershell abfangen kann das mir nur die Domänuser angezeigt werden welche in keiner anderen Gruppe member sind.

Kann mir jemand einen Tip geben wie ich das angehen kann?

Bin was powershell angeht ein Neuling und blicke da noch nicht so ganz durch.

Danke für euere Hilfe.

Gruss

Gerry

Werte zweier Spalten aus 2 verschiedenen .xls Dateien vergleichen

$
0
0

Hallo zusammen!

Ich habe zwei .xls Dateien mit jeweils einer Kostenaufstellung für genutzten Speicherplatz. Jetzt muss ich ein Skript schreiben, das die Werte der Spalten "Speicherplatz" beider .xls Dateien miteinander vergleicht, und bei einer Abweichung von (Hausnummer) 10% die betroffenen Zeilen in einer csv, html oder xls Datei ausgibt.

Bis jetzt habe ich folgendes:

#*=============================================================================
#* Open first Excel File and read from relevant sheet
#*=============================================================================

$XLSDoc = "I:\ISS\RanM\2013_Q2_Kostenaufteilung_ISS-Server.xlsm" 
$SheetName = "nach TSM-Storage"
$Excel = New-Object -ComObject "Excel.Application"

$Workbook = $Excel.Workbooks.open($XLSDoc) 
$Sheet = $Workbook.Worksheets.Item($SheetName) 
$Sheet.Activate()


#*=============================================================================
#* Open second Excel File and read from relevant sheets
#*=============================================================================

$XLSDoc1 = "I:\ISS\RanM\CeBrA-Cloud_Server_2.3.xlsx" 
$SheetName1 = "Abrechnung INTERN 2.3"
$Excel1 = New-Object -ComObject "Excel.Application"

$Workbook1 = $Excel1.Workbooks.open($XLSDoc1)
$Sheet1 = $Workbook1.Worksheets.Item($SheetName1)
$Sheet1.Activate()

Soweit funktioniert alles prima. Ich kann auf jede beliebige Zelle zugreifen und mir den Inhalt auf der Konsole ausgeben lassen. Zum Testen habe ich eine Funktion geschrieben, die alle Zeilen ausgibt, bei denen der Wert der Spalte x grösser ist als der vom User eingegebene Parameter. Das muss noch angepasst werden, sodass er die Werte mit der der anderen xls Datei vergleicht. Hier brauche ich Hilfe.

#*=============================================================================
#* Purpose: Selects all relevant columns for comparison
#*
#*=============================================================================

#TODO: pipe this output into the html function

Function SelectColumns ($thresh) {
$row = 5
$col = 3

    While($Sheet.Cells.Item($row, $col).Value() -ne $null){

    if($Sheet.Cells.Item($row, $col).Value() -gt $thresh){
        Write-Host $Sheet.Cells.Item($row, $col-2).Value(), $Sheet.Cells.Item($row, $col).Value()
        }
    $row +=1   
    }
}

Nun soll das Ergebnis dieser Funktion (die selektierten Zeilen mit einer Abweichung von über 10% oder was auch immer) in einer html (oder anderes Format) Datei ausgegeben werden. Das habe ich so gelöst:

Function makeHTML{
    $xlHtml = 44
    $missing = [type]::Missing

    $Workbook.SaveAs('H:\Documents\PowerShell\kostenvergleich.html',$xlHtml,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing,$missing) #| Where-Object -EQ $selection
    
}

Funktioniert auf Ebene des gesamten Worksheets super. Aber ich will ja nur meine Ergebnisse exportieren. Die beiden Funktionen mit der Pipe zu verketten hat nicht geklappt. Ich weiss, dass es die $input Variable gibt aber weiss nicht recht damit umzugehen.

Hat jemand eine Idee?

schon mal vielen Dank im Voraus

lg

tchintchie

PS: ich bin absoluter Powershell-Anfänger also bitte Geduld mit mir :-)

PS 3.0 executionpolicy restricted und trotzdem ausführbar?

$
0
0

Hallo...


Ich habe folgendes "Problem" oder verstehe es nur nicht...

die execution policy ist:

PS C:\WINDOWS\system32> get-executionpolicy -list

                                                      Scope                                             ExecutionPolicy
                                                      -----                                             ---------------
                                              MachinePolicy                                                   Undefined
                                                 UserPolicy                                                   Undefined
                                                    Process                                                   Undefined
                                                CurrentUser                                                   Undefined
                                               LocalMachine                                                  Restricted

und wenn ich ein script von der Powershell aus starten will, wird es nicht zugelassen - alles richtig.

wenn ich aber das Skript rechtsklicke und "mit Powershell ausführen" wähle wird das skript ausgeführt...

Das Skript liefert dann auf die anfrage "get-executionpolicy -list" folgendes zurück:

        Scope                                             ExecutionPolicy
        -----                                             ---------------
MachinePolicy                                                   Undefined
   UserPolicy                                                   Undefined
      Process                                                      Bypass
  CurrentUser                                                   Undefined
 LocalMachine                                                  Restricted

warum ist denn nun das Skript ausführbar? sollten nicht alle skripte vor der ausführung blockiert werden?

(habe Win8 pro 64bit; Powershell 3.0)

.xml-Datei mit Powershell bearbeiten (Werte/Strings ersetzen)

$
0
0

Schönen Tag,

ich habe ein .xml-File mit folgenden Inhalt:

<?xml version="1.0"?>
<MBNProfile xmlns="http://www.microsoft.com/networking/WWAN/profile/v1">
  <Name>A1</Name>
  <IsDefault>true</IsDefault>
  <ProfileCreationType>DeviceProvisioned</ProfileCreationType>
  <SubscriberID>12312313131312313123</SubscriberID>
  <SimIccID>123123123123123</SimIccID>
  <HomeProviderName>A1</HomeProviderName>
  <AutoConnectOnInternet>false</AutoConnectOnInternet>
  <ConnectionMode>auto-home</ConnectionMode>
  <Context>
    <AccessString></AccessString>
    <UserLogonCred>
      <UserName>useruseruseruser</UserName>
      <Password>nothing special</Password>
    </UserLogonCred>
    <Compression>DISABLE</Compression>
    <AuthProtocol>NONE</AuthProtocol>
  </Context>
</MBNProfile>

Ich möchte nun mithilfe von Powershell, "auto-home" durch "auto" ersetzen und das "false" bei AutoConnectOnInternet durch "true" ersetzen.

Angefangen habe ich so:

[xml]$WWAN=Get-Content "c:\temp\hallo.xml"
$WWAN.MBNProfile.ConnectionMode

Wie kann ich nun den Wert der in ConnectionMode und AutoConnectOnInternet steckt ersetzen?

Liebe Grüße,

Patrick

Automatisierter Mail-Versand via PowerShell Script

$
0
0

Guten Tag, 

Habe mich in den letzten Tagen ein wenig mit PowerShell im zusammenhang mit Mail-Versand beschäftigt.

Alles funktioniert, sprich, ich habe ein Script geschrieben, welches ein Mail mit einem Anhang sendet. Auch die Automatisierung läuft. 

Das Problem welches ich habe, sobald ich einen Anhang, welcher grösser als 8MB ist, über dieses Script versenden will, öffnet sich zwar PowerShell (dauert auch sehr lange bis dieses Fenster wieder geschlossen wird) jedoch die Mail kommt nicht an, sprich wird nicht versendet. 

JETZE MEINE FRAGE: 

- Ist die Anhang-Grösse über PowerShell auf max. 8MB begrenzt, oder wo liegt das Problem?

- Wie kann ich dies umgehen, damit ich über dieses Script auch eine Datei welche grösser als 8MB ist, versenden kann?

Ich habe schon Stundenlang im Netzt gesucht, jedoch diesbezüglich leider nichts gefunden, weswegen ich jetzt die Hoffnung habe, hier Hilfe zu bekommen.

Vielen Dank schon im voraus

& liebe Grüsse aus der Schweiz ;-)

Measure-VM als HTML Report mit knapper Ausgabe von Networkinbound und Networkoutbound

$
0
0

Hallo,


ich möchte gerne die Measure-VM Funktion auf unseren Hyper-V 2012 Servern nutzen und habe mich dabei an diesem Artikel orientiert:

http://blogs.technet.com/b/virtualization/archive/2012/08/20/how-to-use-resource-metering-with-powershell.aspx

Wenn man nur die Basisfunktion: get-vm | measure-vm nutzt, werden am Ende 2 Spalten mit Networkinbound und Networkoutbound angezeigt.
Nun möchte ich diese Ausgabe in HTML Konvertieren und abspeichern.
Dabei bekomme ich aber keine Networkinbound/Outbound Spalte angezeigt sondern nur die Spalte NetworkMeteredTrafficReport mit dem Zelleninhalt: Microsoft.HyperV.PowerShell.VMPortAclMeteringReport[]

Im Blog sieht man das "Problem" auch nach Eingabe von:
$report = Measure-VM -vmname Greendale-VM
$report | Format-List
Den Autor scheint die Ausgabe nicht gestört zu haben, daher wurde auch nicht weiter darauf eingegangen.

Dies hier funktioniert ja auch, ist mir aber zu umfangreich, mir reichen erstmal die reinen MB Werte:
(get-vm | Measure-VM  ).NetworkMeteredTrafficReport

Vielleicht ist ja ein Powershell Profi an Board der nen Tipp hat!

Ziel ist es übrigens, dass ich gegen 06:00 einen Reset durchführe und gegen 16:00 eine Auswertung per Mail verschicke!

Danke
Daniel


XML-Deklaration mithilfe der WriteXml-Methode aus DataSet definieren

$
0
0

Hallo Zusammen,

Ich bräuchte aus einer SQL-Datenbank einen automatisierten XML-Export via PowerShell und da dachte ich an die WriteXml-Methode aus der DataSet-Klasse.
Mir ist bewusst, dass PS ein ConvertTo-XML CmdLet besitzt, allerdings macht dieses nicht das gewünschte Format.

Hier zuerst mein Ansatz:
Ein DataSet wird mittels DataAdapter-Fill-Methode befüllt und dieses produziert mir mithilfe der WriteXML-Methode das XML-File

$conn = New-Object System.Data.SqlClient.SqlConnection("....")
$cmd = New-Object System.Data.SqlClient.SqlCommand("Select * FROM dbo.Tabelle", $conn)
$da = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$da.Fill($ds)

$ds.DataSetName = "aa"
$ds.Tables[0].TableName = "Table"   
$settings = New-Object System.Xml.XmlWriterSettings
$settings.Encoding = [System.Text.Encoding]::UTF8
$settings.Indent = $true
$xmlWriter = [System.Xml.XmlWriter]::Create("C:\Temp\bla.xml", $settings)
$ds.WriteXml($xmlWriter)
$xmlWriter.close()
Jetzt die Frage:

Kann man dieser Klasse irgendwie das 'standalone="yes"'-Attribut mitgeben? Oder geht das nur mit Regex-Methoden?
Wenn ich die Überladung "WriteXml(String)" verwende bekomm ich zwar das Standalone, aber kein encoding="UTF-8" mehr.
Der Header muss nämlich so aussehen: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Sonst macht diese Methode alles wunderbar für meine Anforderungen.

Grüße
speedy


LDAP-Attribute von AD-Objekten mit Powershell bearbeiten

$
0
0

Hallo Gemeinde,

gegenwärtig versuche ich, in die Tiefen von Powershell einzudringen, und dabei deren gepriesene Vorteile zu erkennen.
Die benutzte Plattform ist ein DC auf Server 2008 R2 mit aktuellem Patch-Stand.
Bei meinen Tests stieß ich auf eine Merkwürdigkeit, die ich noch nicht vorlaut als Diskrepanz bezeichnen möchte.

Folgendes Beispiel:
In der Karte "Attribut Editor" jedes Benutzer-Objektes ist u.a. das Attribut 'mail' zu finden.
Wenn ich das Powershell-Kommando 'Set-ADUser' benutzte, um diesem Attribut einen gültigen Wert zuzuweisen, hatte ich bisher nur Erfolg, wenn ich als Parameternamen '-email' benutzte (erraten, nicht irgendwo nachgelesen).
Merkwürdigerweise gibt es noch mehr Attribute, deren aufgelistete Namen Powershell nicht kennt.
Ebenfalls merkwürdigerweise trifft das aber nicht für alle gelisteten Attribute zu.

Kann jemand eine Erklärung liefern ?

Dank im Voraus

 




Pfad aus .xml

$
0
0

Hallo,

ich bin relativ neu was Powershell angeht und bitte daher um Hilfe, da ich nach stundenlangem suchen nicht weiterkomme.

Ich möchte in meinem script, welches txt Dateien verschieben soll die Pfade aus einer .xml ziehen.

Also meine Pfade die mein Script nutzen soll, kann somit von dritten einfach in der .xml geändert werden.

Mein script ist wie folgt:

cd 'H:\powersh\incoming'                                                                   

Start-Transcript -Path “C:\outgoing\logfile\log.txt"

$ErrorActionPreference = "SilentlyContinue"                                              

$Iteminfo = get-childitem H:\powersh\incoming\*.* -include *.TXT              

Foreach ($f in $Iteminfo)
{
if ($f.extension -eq ".TXT")                                                                  

{
mv H:\powersh\incoming\datei1.TXT C:\outgoing
}
}
End-Transcript

Meine .xml wie folgt:

<parameters>
<quelle>
H:\powersh\incoming
</quelle>
<ziel>
C:\outgoing
</ziel>
</parameters>

Ich hoffe mir kann Jemand helfen bzw. einen Tipp geben wie ich den Pfad aus der .xml an mein Script übergebe und zum verschieben nutzen kann.

Danke!

Restore-SQLDatabase Wiederherstellungspfad

$
0
0
Hallo =),

Kann man den Wiederherstellungspfad bei dem Restore-SQLDatabase CMDlet als parameter angeben?
Wenn nicht, wie ist es dann möglich eine neue Datenbank aus einer .bak-Datei zu erstellen?

Liebe Grüße,

David

Fehler bei Powershell-Skript

$
0
0

Guten Morgen!

Wir führen bei uns in der Firma schon seit längerer Zeit ein Skript aus, dass AD-Gruppen  aus 2 OUS (einer verschiedenen) Domäne synchron hält. Klappt hervorragend, doch seit heute morgen lässt sich das Skript nichtmehr wirklich starten.

Um 6:00 war folgender Fehler in das Logfile geschrieben worden (Skript wird automatisch jeden morgen am Server ausgeführt und nochmals um 12:00):

Get-QADGroup : Das Steuerelement wird vom Server nicht untersttzt. Das Steuerelement ist erforderlich.
At C:\dotnet\ImportGroupMembers.ps1:17 char:37+ ForEach($QuellGruppe in Get-QADGroup <<<<  -SearchRoot $Quell_OU) {+ CategoryInfo          : NotSpecified: (:) [Get-QADGroup], DirectoryAcces 
   sException+ FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.DirectoryA 
   ccess.DirectoryAccessException,Quest.ActiveRoles.ArsPowerShellSnapIn.Power  
  shell.Cmdlets.GetGroupCmdlet

Als ich denn Fehler entdeckt hatte, versuchte ich es lokal am Rechner auszuführen und es kam ein neuer Fehler:

Get-QADGroup : The server does not support the control. The control is critical.
In C:\Users\useruser\Desktop\ImportGroupMembers.ps1:17 Zeichen:25+ ForEach($QuellGruppe in Get-QADGroup -SearchRoot $Quell_OU) {+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : NotSpecified: (:) [Get-QADGroup], DirectoryAccessException+ FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.DirectoryAccess.DirectoryAccessException,Ques 
   t.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.GetGroupCmdlet

Woran kanns liegen?

Ich hoffe ihr könnt mir weiterhelfen!

Vielen Dank im Vorraus!

Liebe Grüße,

Patrick


Zwei .Csv Files vergleichen und zusammenführen

$
0
0

Hallo Zusammen,

ich habe zwei csv-Files mit folgendem Aufbau

File1:

CAQNR;PNR;Name;Vorname;KstMB;Org.;Orgbez;Austritt
30;;Name 1;Vorname 1;TeamBratislava;;;
31;;Name 2;Vorname 2;TeamBratislava;;;
35;321224;Name 3;Vorname 3;Qualitätslenkung;QL;Qualitätslenkung;
39;;Name 4;Vorname 4;QualitätKaufteilePlanung;;;

File 2:

CAQNR;Name;AbteilungALT;KstMBALT
31;Name 1;QB;Team Bratislava
35;Name 2;QL1;Qualitätslenkung
40;Name 3;QK1;Qualität Kaufteile Lenkung
46;Name 4;QK;Qualität Kaufteile

Nun möchte ich gern die beiden Files vergleichen und eine neue Excel erstellen die mir folgendes wieder ausgibt:

CAQNR;PNR;Name;Vorname;KstMB;Org.;Orgbez;Austritt;AbteilungALT;KstMBALT

Ist eigentlich ein klassischer Fall für ein SQL-Statement aber leider habe ich kein SQL zur Verfügung. Gibt es da Möglichkeiten, dies über Powershell lösen? In diesem Fall wäre der primäre Schlüssel die "CAQNR". Ich habe schon mit dem Compare-Cmdlt einige Versuche angestellt, komme aber nicht zum gewünschten Ergebnis.

Vorab besten Dank & Gruß
Thomas


Viewing all 2314 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>