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

RabbittMQ Daten mit Powershell ins AD übergeben

$
0
0

Hallo zusammen,

wir würden eigentlich gerne Daten vom RabbitMQ mit Powershell ins AD übertragen. Das funktioniert im Prinzip, jedoch nicht mit allen Attributen auf einmal. Falls jemand eine Idee hat, wäre ich dankbar....

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$OU_Path = "OU=ABC_USERS,OU=XX_ABC,DC=domain,DC=meine,DC=de"
$profilePath = "\\meine.domain.de\Profil\Profildaten\$SamAccountName"
$homeDrive = "H"
$homeDirectory = "\\meine.domain.de\Daten\Userdaten\$SamAccountName"


$Params = @{
    BaseUri = "https://rabbitmq.meine.domain.de:47111"    Credential = $credRabbit
}

$QueueName = 'pstestqueue'

$Incoming = Get-RabbitMQMessage @params -VirtualHost / -Name $QueueName -count 1
$IncomingData = $Incoming.payload | ConvertFrom-Json
#AD User:
#AD User anlegen wenn noch nicht vorhanden:
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0) {
    $newUser = @{       Path = $OU_Path       UserPrincipalName = "$SamAccountName@ads.katsh.de"       SamAccountName = $SamAccountName       profilePath = $profilePath       homeDrive = $homeDrive       homeDirectory = $homeDirectory       name = $DisplayName    }
New-ADUser @newUser
}
$changeUser = $IncomingData.changeUser
#AD User Änderungen:
Get-ADUser -Identity $IncomingData.SamAccountName | Rename-ADObject -NewName $IncomingData.changeUser.DisplayName
Get-ADUser -Identity $IncomingData.SamAccountName | Set-ADUser -GivenName $IncomingData.changeUser.GivenName
#AD User: Change PW:
if ($IncomingData.Password -ne "") {    Set-ADAccountPassword -Identity $IncomingData.SamAccountName -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $IncomingData.Password -Force)
}
Get-ADUser -Identity $IncomingData.SamAccountName | Set-ADUser -GivenName $IncomingData.changeUser.GivenName
So geht es (aber eben nur mit GivenName)
Get-ADUser -Identity $IncomingData.SamAccountName | Set-ADUser -GivenName $IncomingData.changeUser.GivenName


FG

Helmut




New-WebServiceProxy converting Problem

$
0
0

Hi,

I am trying to call the webservice from cloud hoster filebox. Via the webservice test-tool SoapUI it works great. But via Powershell I am getting a converting error. I've tried many things, but can't get to a solution.

The script actually looks pretty simple:

$proxy = New-WebServiceProxy -URI 'https://www.filebox-solution.com/fbws/services/FileboxService?wsdl'

$type = $proxy.GetType().Namespace

$inDTO   = new-object($type + ".PasswordAuthInDTO")
$return  = new-object ($type + ".PasswordAuthOutDTO")

$inDTO.clientCorrelator = ''
$inDTO.clientVersion = ''
$inDTO.username = 'user'
$inDTO.password = 'pass'

$return = $proxy.passwordAuthentication($inDTO)

The script should call the following webservice method (body):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.fbws.csnc.ch" xmlns:xsd="http://dto.fbws.csnc.ch/xsd"><soapenv:Header/><soapenv:Body><ser:passwordAuthentication><!--Optional:--><ser:inDTO><!--Optional:--><xsd:clientCorrelator>?</xsd:clientCorrelator><!--Optional:--><xsd:clientVersion>?</xsd:clientVersion><!--Optional:--><xsd:password>?</xsd:password><!--Optional:--><xsd:username>?</xsd:username></ser:inDTO></ser:passwordAuthentication></soapenv:Body></soapenv:Envelope>


The error message is this (translated from german):

The argument "inDTO" with the value ""Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1s_services_FileboxService_wsdl.PasswordAuthInDTO"" for "passwordAuthentication" cannot be converted to type 
""Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1s_services_FileboxService_wsdl.PasswordAuthInDTO"" can be converted: "The value 
""Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1s_services_FileboxService_wsdl.PasswordAuthInDTO"" of type 
""Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1s_services_FileboxService_wsdl.PasswordAuthInDTO"" can't get into the type 
""Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1s_services_FileboxService_wsdl.PasswordAuthInDTO"" can be converted."

For me, it seems as if it is trying to convert the variable into a type it already has.

Any help is greatly appreciated!

New-WebServiceProxy Problem beim Methodenaufruf

$
0
0

Hi,

ich versuche den Webservice vom Clouddienstleister FileBox aufzurufen. Über das Webservice Test-Tool SoapUI funktioniert das problemlos. Über Powershell bekomme ich aber einen Konvertiertierungsfehler. Ich habe schon einiges versucht, aber kam bisher noch zu keiner Lösung

Das Skript sieht eigentlich ziemliche einfach aus:

$uri = "https://www.filebox-solution.com/fbws/services/FileboxService?wsdl"

$proxy = New-WebServiceProxy -URI $uri -namespace fbws $inDTO = new-object fbws.PasswordAuthInDTO $return = new-object fbws.PasswordAuthOutDTO $inDTO.clientCorrelator = '' $inDTO.clientVersion = '' $inDTO.username = 'user' $inDTO.password = 'pass' $return = $proxy.passwordAuthentication($inDTO)

Das Skript ruft die folgende Webservice Methode auf:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.fbws.csnc.ch" xmlns:xsd="http://dto.fbws.csnc.ch/xsd"><soapenv:Header/><soapenv:Body><ser:passwordAuthentication><ser:inDTO><xsd:clientCorrelator>?</xsd:clientCorrelator><xsd:clientVersion>?</xsd:clientVersion><xsd:password>?</xsd:password><xsd:username>?</xsd:username></ser:inDTO></ser:passwordAuthentication></soapenv:Body></soapenv:Envelope>

Die Fehlermeldung ist die folgende:

Das Argument "inDTO" mit dem Wert  "fbws.PasswordAuthInDTO" für "passwordAuthentication" kann nicht in den Typ "fbws.PasswordAuthInDTO" konvertiert werden: "Der Wert "fbws.PasswordAuthInDTO" vom Typ 
"fbws.PasswordAuthInDTO" kann nicht in den Typ "fbws.PasswordAuthInDTO" konvertiert werden."
In \\rehau.org\user\hartmat\Documents\Projekte\FileBox\callWS.ps1:14 Zeichen:8
+ return = $proxy.passwordAuthentication($inDTO)
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

Für mich sieht es so aus, als stolpert er bei dem Versuch die Variable $inDTO in einen Typ zu konvertieren, den sie aber schon besitzt.

Jeder Hinweis ist dankend willkommen!







Script zum wiedergeben von Outlook Termindaten (Namen der Teilnehmer (Raum-Kalender))

$
0
0

Guten Tag liebe Forengemeinde,

ich bin neu und komplett unerfahren im Bereich Powershell, aber ich befürchte, dass ich für mein derzeitiges Projekt nicht um PS herum komme.

Es geht darum, bestimmte Daten, immer vom heutigen Datum, aus dem Outlook Kalender anzeigen zu lassen. Bei den Daten handelt es sich um die Teilnehmer eines Meetings, welches in einem Raumkalender steht.

Das Ganze wird mit nicht mit Outlook 365, sondern mit einem physischen Exchange-Server realisiert.

Hat jemand von euch eine Idee, wie sowas zu realisieren wäre?

MfG

Bowet

PowerShell DSC ConfigurationNames - was nützen die?

$
0
0

Guten Tag

Ich habe einen DSC Pull Server aufgesetzt und auch bereits ein, zwei Clients daran angebunden.

Ich habe nun eine Verständnisfrage bezüglich ConfigurationNames. Man kann im LocalConfigurationManager bzw. im ConfigurationData File für die Clients ConfigurationNames angeben. Nehmen wir folgendes an:

@{
    NodeName = "Admin-PC"
    Role = "AdminClient"
    LCM_RebootNodeIfNeeded = $true
    LCM_ActionAfterReboot = "ContinueConfiguration"
    LCM_RefreshFrequencyMins = 90
    LCM_ConfigurationModeFrequencyMins = 45
    LCM_ConfigurationMode = "ApplyAndAutocorrect"
    LCM_ConfigurationNames = @("ClientConfiguration")
    LCM_ConfigurationDependsOn = @{}
}
@{
    NodeName = "TEST-PC"
    Role = "TestClient"
    LCM_RebootNodeIfNeeded = $true
    LCM_ActionAfterReboot = "ContinueConfiguration"
    LCM_RefreshFrequencyMins = 90
    LCM_ConfigurationModeFrequencyMins = 45
    LCM_ConfigurationMode = "ApplyAndAutocorrect"
    LCM_ConfigurationNames = @("ClientConfiguration")
    LCM_ConfigurationDependsOn = @{}
}

Wie Ihr seht, sollen beide Computer die Konfiguration "ClientConfiguration" erhalten.

Die ClientConfiguration würde so aussehen.

Configuration ClientConfiguration {

    Param()
    Import-DscResource -ModuleName xPSDesiredStateConfiguration
    Import-DscResource -ModuleName cRegFile
    
    Node $AllNodes.Where({ $_.Role -in @("AdminClient","TestClient")  }).NodeName
    {
        # Abacus 2.0.439 installieren
        xPackage PackageAbacus20439 {
            Name = "AbaClient"
            Path = "\\server\share\abaclient_installer_de.msi"
            Ensure = "Present"
            ProductId = "2DC41FAE-68BB-4E83-BDA2-64EF8F3FE4DD"
            LogPath = "C:\install\abaclient_msiinstalllog.txt"
            Arguments = "installlevel=5"
        }

        # Abacus Reg File
        cRegFile RegFileAbacus {
            Key = "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\abaclientsetting"
            RegFilePath = "\\server\share\AutoUpdateAus.reg"
            DependsOn = "[xPackage]PackageAbacus20439"
        }
    }
}

Wie normal bei DSC, kreiert diese Konfiguration jedoch für jeden Node ein File, z.B Test-PC.mof und Admin-PC.mof

Diese .mof Dateien sind auch sehr spezifisch dem Computer zugeordnet, am Anfang vom MOF File steht folgendes:

/*
@TargetNode='TEST-PC'
@GeneratedBy=xy
@GenerationDate=07/17/2019 14:11:48
@GenerationHost=xy
*/

Hier wird also spezifisch auf ein TagetNode hingewiesen.

Nun stellen sich mir hier folgende Fragen.

  • Welche dieser 2 (oder mehr, wenn ich mehr Nodes hinzufüge) Dateien muss ich nun auf ClientConfiguration.mof umbenennen?
  • Macht es überhaupt Sinn, ConfigurationNames zu verwenden, oder soll ich sie einfach beim PC-Namen belassen?
  • Wird dieses "TargetNode" im MOF File überhaupt berücksichtigt?
  • Kann ich diese Files irgendwie direkt mergen?
  • Kann ich der Konfiguration von Anfang an sagen, erstelle nur 1 File und gleich mit dem korrekten Namen?
  • Wird angenommen, dass wenn man ConfigurationNames benutzt, als Node nur localhost verwendet?

Vielen Dank!




auslesen folgender Felder

$
0
0

Hallo NG

Ich bin nicht so bewandert mit PS. Deshalb meine Frage ob ich die Abfrage für Namen Vornamen und weitere Felder des User in der AD in ein .csv speichern kann.

Danke und allen eine schöne Woche.

Grüsse aus der Schweiz

Eric

Problem beim Erstellen einer GUI mit Powershell

$
0
0

Hallo zusammen,

ich habe zu meinem unten stehenden Skript eine Frage!
Bzw. hoffe ich, dass ihr mir helfen könnt, den Fehler zu finden.

Es geht darum, dass ich für eine Abfrage eine kleine GUI schreiben möchte. In diesem speziellen Fall soll ein Kunde ausgewählt werden (erster Knopfdruck), wodurch eine Funktion aufgerufen wird, welche die GUI verändert. Man soll nun den Kunden auswählen (hier durch die Zahlen 1 bis 15 repräsentiert) und nachdem man auf dem entsprechenden Button gedrückt hat, soll unter der Combobox der ausgewählte Kunde ausgegeben werden.

Leider kann ich mich drehen und wenden, wie ich will - das $objCombobox.selectedItem bleibt leer.

Als Workaround habe ich das Ganze ohne Functions geschrieben und es funktioniert. Deswegen vermute ich, dass es irgendwas mit der Parameterübergabe zu tun hat. Aber kann/muss man Objekte anderen Funktionen übergeben?

Die umgeschriebene Fassung ist leider sehr unübersichtlich und zudem lässt mich dieses Problem nicht los.

Könnt ihr mir helfen?

Vielen Dank schon mal, dass du dir das bis hierhin durchgelesen hast. :-)

Viele Grüße

#################
# Informationen #
#################
# Skriptname: GUI_stoerbericht
# Version: 0.1
# Datum: 15.07.2019
# Autor: german_erd ;-)
#################################
#############
# Preskript #
#############
Add-Type-AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
#############
# Variablen #
#############
##############
# Funktionen #
##############
functionKundeInKontextUebernehmen{
    $outputLabel              =New-Object System.Windows.Forms.Label
    $outputLabel.AutoSize     =$true
    $outputLabel.width        =300
    $outputLabel.height       =20
    $outputLabel.location     =New-Object System.Drawing.Point(100,325)
    $outputLabel.text         ="Ausgewählter Kunde: " +$objCombobox.SelectedItem
    $outputLabel.Font         ='Microsoft Sans Serif,10'
    $objForm.controls.AddRange(@($outputLabel))
}
functionEinKundeAusgewaehlt {
    # GUI
    # Button Alle Kunden Ausblenden
    $objForm.Controls.remove($AllCustButton)
    $objForm.refresh()
    # Combobox
    $objCombobox             =New-Object System.Windows.Forms.ComboBox
    $objCombobox.Location              =New-Object System.Drawing.Point(100,300)
    $objCombobox.Size                  =New-Object System.Drawing.Size(600,200)
    1..15|ForEach-Object {$objCombobox.Items.Add($_)}
    # Button
    $Button                            =New-Object System.Windows.Forms.Button
    $Button.Location                   =New-Object System.Drawing.Point(500,325)
    $Button.Size                       =New-Object System.Drawing.Size(200,50)
    $Button.Font                       ="Microsoft Sans Serif,12"
    $Button.Text                       ="Gewählten Kunden übernehmen"
    #$button.Visible                     = $false
    $objForm.controls.AddRange(@($objCombobox,$Button))
    $Button.add_click({ KundeInKontextUebernehmen })
}
#############
# Basic GUI #
#############
# Objekt Fenster
$objForm                           =New-Object system.Windows.Forms.Form
$objForm.ClientSize                ='800,600'
$objForm.text                      ="Störberichte Skript"
$objForm.TopMost                   =$true
$objForm.BackgroundImageLayout     =2
$objForm.BackgroundImage           = [System.Drawing.Image]::FromFile('C:\Users\xxxxx\Desktop\xxxx.jpg')
$objForm.AcceptButton              =$Button
$objForm.Controls.Add($Button)
# Abbrechen-Button#
$CancelButton                      =New-Object System.Windows.Forms.Button
$CancelButton.Location             =New-Object System.Drawing.Size(600,500)
$CancelButton.Size                 =New-Object System.Drawing.Size(150,50)
$CancelButton.Text                 ="Abbrechen"
$CancelButton.Name                 ="Abbrechen"
$CancelButton.DialogResult         ="Cancel"
$CancelButton.Add_Click({$objForm.Close()})
# Alle Kunden auswählen#
$AllCustButton                     =New-Object System.Windows.Forms.Button
$AllCustButton.Location            =New-Object System.Drawing.Size(100,100)
$AllCustButton.Size                =New-Object System.Drawing.Size(250,150)
$AllCustButton.Text                ="Alle Kunden auswählen"
$AllCustButton.Name                ="Alle Kunden auswählen"
$AllCustButton.Font                ="Microsoft Sans Serif,16"
$AllCustButton.Add_Click({ alleKundenAusgewaehlt })
# Einen Kunden auswählen#
$OneCust                           =New-Object System.Windows.Forms.Button
$OneCust.Location                  =New-Object System.Drawing.Size(450,100)
$OneCust.Size                      =New-Object System.Drawing.Size(250,150)
$OneCust.Text                      ="Einen Kunden auswählen"
$OneCust.Name                      ="Einen Kunden auswählen"
$OneCust.Font                      ="Microsoft Sans Serif,16"
$OneCust.Add_Click({ EinKundeAusgewaehlt })
# Finales Einfügen der einzelnen Objekte
$objForm.controls.AddRange(@($OneCust,$AllCustButton,$CancelButton))
#####Ende Basic GUI#####
# Zum Ausführen des ganzen Spaßes
[void]$objForm.ShowDialog()



How to use IO.FileSystemWatcher to Create a Print-Hotfolder / Why is my script not workling?

$
0
0

I want to use the IO.FileSystemWatcher to Crate a Hotfolder. Every File that is thrown into this folder should be printed out on the local standard printer. 

I put some extra in logging and sending an notification Mail but the main reason is to print the files and move them in a different folder after they have been printed.

Unregister-Event -SourceIdentifier *

$folder = 'C:\Users\R&D\Documents\Python_Powershell_print\printfolder' # Enter the root path you want to monitor. 
$filter = '*.*'  # You can enter a wildcard filter here. 
# In the following line, you can change 'IncludeSubdirectories to $true if required.                           
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} 
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
$name = $Event.SourceEventArgs.Name 
$changeType = $Event.SourceEventArgs.ChangeType 
$timeStamp = $Event.TimeGenerated

Write-Host "The file '$name' was $changeType at $timeStamp" -fore green 
Out-File -FilePath C:\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"
start-process -FilePath $name.fullName -Verb Print
Move-Item -FilePath "$name.fullName" C:\printed -Verbose -Force *>&1

$MyEmail = "superspamtube@gmail.com"
$SMTP= "smtp.gmail.com"
$To = "superspamtube@gmail.com"
$Subject = "PRINT HOTFOLDER HIT"
$Body = "PRINT HOTFOLDER HIT"
$Creds = (Get-Credential -Credential "$MyEmail")

Start-Sleep 2

Send-MailMessage -To $to -From $MyEmail -Subject $Subject -Body $Body -SmtpServer $SMTP -Credential $Creds -UseSsl -Port 587 -DeliveryNotificationOption never

<# 
$PSEmailServer variable can be used to pre-configure the
SMTP server in your Powershell Profile. Then you don't need
to specify -smtpserver paramter. Send-MailMessage will use the
SMTP sever address assigned to $PSEmailServer
Delivery Notification Options:
-- None: No notification.        
-- OnSuccess: Notify if the delivery is successful.      
-- OnFailure: Notify if the delivery is unsuccessful.     
-- Delay: Notify if the delivery is delayed.       
-- Never: Never notify.
#>
}
# To stop the monitoring, run the following commands: 
# Unregister-Event FileDeleted 
# Unregister-Event FileCreated 
# Unregister-Event FileChanged


ISE stürtzt ab nach Enable-Mailbox command

$
0
0

Hallo,

beim Ausführen von Enable-Mailbox stürtzt ISE ab. Es gibt keine Einträge im lokalen Event-Viewer (Application-Log oder Windows-Powershell-Log). Falls etwas auf Server-Seite passiert kann ich derzeit nicht einsehen. Das Postfach wird erstellt, allerdings stürzt bei mir lokal die Powershell ab.

  import-module 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
    Connect-ExchangeServer -ClientApplication:ManagementShell -auto

...


try
{
    Enable-Mailbox -Identity $sAM -Alias $sAM -DisplayName $verName -Database $mailDB -PrimarySmtpAddress $primarySMTP -ErrorAction SilentlyContinue

}
catch
{
    Write-Error $_.Exception.ToString()
    Read-Host -Prompt "The above error occurred. Press Enter to exit."
}

mit Powershell im AD language und languageCode setzen

$
0
0

Hallo an alle,

aktuell beschäftige ich mit PowerShell und dem ActiveDirectory(AD). 

Viele Werte kann ich schon setzen über PowerShell im AD. Leider lässt sich der Wert aber nicht für language und languageCode setzen. 

Frage ich die Werte einfach ab: 

Get-ADUser -Filter {Surname -eq "Braunstein" -and  GivenName -eq "Toot"} -Properties Initials,EmailAddress,Description,Officephone,HomePage, employeeID, employeeNumber, language, languageCode

erhalte ich alle angeforderten Werte - natürlich auch language und languageCode . 

Möchte ich jedoch die Werte setzen: 

Get-ADUser -Filter {Surname -eq "Braunstein" -and  GivenName -eq "Toot"} |Set-ADUser -languageCode 8


oder 


Get-ADUser -Filter {Surname -eq "Braunstein" -and  GivenName -eq "Toot"} |Set-ADUser -language DE

erhalte ich stets die Fehlermeldung: "Es wurde kein Parameter gefunden, der dem Parameternamen "language" entspricht"

Was mache ich falsch?


In der PowerShell GUI eine ComboBox einsetzten

$
0
0

Hallo alle zusammen,

ich möchte mir eine kleine GUI mit PowerShell in Visual Studio 2019 bauen, mit der später Server ansteuern an.
Nun hab ich auch schon das ein oder andere heraus gefunden wie es funktioniert, jedoch finde ich im Netz einfach nichts dazu wie man eine ComboBox mit Inhalt befüllt.

ich bin aktuell soweit, dass man in der Main_Load rein schreiben muss was er in die ComboBox reinladen soll.
Leider weiß ich absolut nicht wo ich da ansetzten soll.
Am Ende soll es so sein, dass er alle VMs von einem Server ausliest und diese dann im Dropdown Menü wieder gibt.

Textbox befüllen und co. klappt schon ganz gut, nur ich finde einfach keine Anleitung wie man eine ComboBox befüllt bekommt.

Könnt ihr mir da eventuell weiter helfen?
Eventuell hat jemand einen Codeschnipsel der mit weiter helfen könnte?
Habt ihr eventuell ein gutes Tutorial wo so etwas für VS 2017 / 2019 beschrieben ist?

Ich danke euch schon einmal im Voraus :)

Ordner Rechte

$
0
0

Hallo Zusammen,

ich bastle mir grad ein PS Skript welches mir Ordner auf dem Fileserver anlegt.

Das sieht so aus und funktioniert schon:

$Ordner1=Read-Host“Gib den Ordnernamen für das Home Laufwerk ein”
$OrdnerU1=Read-Host“Gib den Ordnernamen U1 ein”
$OrdnerU2=Read-Host“Gib den Ordnernamen U2 ein”
$Ordner2=Read-Host“Gib den Ordnernamen für das Backup Laufwerk ein”

New-Item d:\Daten\Home\$Ordner1\$OrdnerU1\$OrdnerU2-type directory
New-Itemd:\Daten\Backup$Ordner2-typedirectory

Ein "Domänenbenutzer" soll nun das Recht ändern auf diese Ordner bekommen.

Es soll eine Abfrage kommen:

Gib den Usernamen an: XXX

Dann werden bei "Enter" die Rechte gesetzt und evtl. noch ein Auszug der Ordner angezeigt was die ACL betrifft.

Wie kann ich das am einfachsten anstellen? So einfach wie mit icals wird es vermutlich nicht sein.....

VG

Changehill

Invoke-Command - New-LocalUser Kennwort wird nicht übernommen

$
0
0

Hallo,

ich habe ein kleines Problem.

Ich arbeite gerade ane inem Script um per Powershell über Invoke-Command auf Remotesystemen lokale User anzulegen.

Das Script funktioniert fast. Es gibt lediglich Probleme bei der Übergabe des Kennworts. Der Account wird angelegt, die Beschreibung angepasst, die Adminrechte vergeben.

Nur das Passwort will nicht.

Param(
    [Parameter(Mandatory=$True,Position=1]
    [String]$RemoteHost,

    [Parameter(Mandatory=$True,Position=2)]
    [String]$NewUser,
        
    [Parameter(Mandatory=$True,Position=4)]
    [String]$TageLaufzeit,

    [Parameter(Mandatory=$True,Position=5)]
    [String]$Password
    
    )
    
    $ts = New-TimeSpan -Days $TageLaufzeit
    $ExpireDate = ((Get-Date).AddDays($TageLaufzeit).ToShortDateString())
    $psSession = New-PSSession -ComputerName $RemoteHost -UseSSL
    $pw = ConvertTo-Securestring $Password -AsPlainText -force
    Enter-PSSession $psSession

    $ScriptBlockContent = 
    {(New-LocalUser -Name $using:NewUser -Password $using:pw -AccountExpires ((Get-Date) + $using:TageLaufzeit) -Description "Ablauf: $Using:ExpireDate") ;
      if (Get-LocalGroup -Name "Administrators")
         {
         add-localgroupmember -name "Administrators" -Member $using:NewUser
         }
      else
         {
         add-localgroupmember -name "Administratoren" -Member $using:NewUser
         }
      Exit-pssession
    }

    Invoke-Command -Session $psSession -Scriptblock $ScriptBlockContent






Wenn ich alle werte eingegeben habe wird der User angelegt, die Berechtigung vergeben und beim Passwort folgende Fehlermeldung ausgegeben:

Eine Ausnahme vom Typ "Microsoft.PowerShell.Commands.InvalidPasswordException" wurde ausgelöst.
    + CategoryInfo          : InvalidArgument: (:) [New-LocalUser], InvalidPasswordException+ FullyQualifiedErrorId : InvalidPassword,Microsoft.PowerShell.Commands.NewLocalUserCommand+ PSComputerName        : xxxxxxxxx

Mir gehen langsam die Ideen aus....

Wie Schattenkopie löschen mit Y und Mount-Verzeichnis löschen?

$
0
0

Hallo,
ich habe ein PowerShell Script erstellt, welches auf einem Windows 10 Rechner vom Laufwerk D: eine Schattenkopie erstellt und diese als D:\ShadowCopy mountet.
Funktioniert alles.
Danach will ich diese Schattenkopie und das Verzeichnis D:\ShadowCopy löschen. Und hier habe ich Schwierigkeiten.

Muss ich vorher die Schattenkopie dismounten? Wenn ja, wie?

Für das Löschen verwende ich:
vssadmin delete shadows /Shadow=$($s2.ID.ToLower())
Nach dem Ausführen des Befehls wird angezeigt:
Soll(en) die 1 Schattenkopie(n) wirklich gel”scht werden (J/N): [N]? N
Wie kann ich Y (yes) dem Befehl mitgeben?

Wie kann ich danach das Verzeichnis D:\ShadowCopy löschen?


Grüße
Alexander

function GetShadow() { $s1 = (Get-WmiObject -List Win32_ShadowCopy).Create("D:\", "ClientAccessible") $s2 = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $s1.ShadowID } $d = $s2.DeviceObject + "\" cmd /c mklink /d D:\ShadowCopy "$d" Read-Host -Prompt "Schattenkopie erstellt > Return" # unmount the shadow ??? # delete shadow mit Y ??? vssadmin delete shadows /Shadow=$($s2.ID.ToLower())

# delete Verzeichnis D:\ShadowCopy ??? }



Fehler microsoft kernel event tracing

$
0
0
ich bekomme unter Windows Ereignisse im den Fehler microsoft kernel event Tracing Angezeigt was kann ich machen das der Fehler verschwindet. Pc fährt immer wieder einfach runter

Script nicht durch eine MessageBox pausieren

$
0
0

Hallo,

ich möchte eine MessageBox die mein Script nicht unterbricht und weiterhin die aktualisierten Variablen aus dem Script anzeigt.

Bisher wird mein Script bis zur MessageBox ausgeführt, dann pausiert und fortgesetzt, wenn die Box geschlossen wird.

Die MessageBox  soll nur aufpoppen aber nichts unterbrechen.

PS Command für Import von Excel nach SharePoint

$
0
0

Hallo zusammen,

ich habe eine Liste in SharePoint mit 10 Spalten und bekomme immer mal wieder excel dateien zugeschickt mit den exakt selben 10 Spalten. Nun würde ich den Excel Inhalt gerne in die SharePoint Liste überführen. Gibt es ein Powershell Befehl der ein import möglich macht?

P.S. Es gibt zwar ein export button bei excel, aber der legt mir immer wieder eine neue Liste in SharePoint an. Ich würde gerne die gleiche Liste benutzen.

Viele Grüße

Christian

Ordnerstruktur "ProgramFiles\PackageManagement\RefernceAssemblies" existiert nicht!

$
0
0

Hallo zusammen,

ich möchte gerne das NuGet Paket per Skript automatisiert auf einem frisch installierten Windows Server 2016 installieren, der keinen Zugriff aufs Internet hat.

Laut MS genügt es, das Paket einfach auf einem anderen System zu installieren und dann das Paket auf dem System welches keinen Zugriff aufs Internet hat in den selben Ordner kopieren.

Ordner: $env:ProgramFiles\PackageManagement\ReferenceAssemblies\\\<ProviderName\>\\\<ProviderVersion\>

Dieser Ordner scheint es aber nicht per Default bei einem frisch installierten Windows Server 2016 zu existieren. Gibt es eine Möglichkeit diesen Ordner auf einfache Weise per Default zu erstellen inkl. den richtigen Berechtigungen?

https://docs.microsoft.com/en-us/powershell/module/packagemanagement/install-packageprovider?view=powershell-6

Grüße

Julian

Automatisch WSUS Updates installieren

$
0
0

Hallo,

ich möchte folgendes Script über die Aufgabenplanung starten. Dies funktioniert mit meinem Account (lokaler Admin). Jetzt möchte ich es mittels Dienst-Konto starten. Das Dienstkonto soll aber nicht unbedingt die Rolle lokaler Admin bekommen. Welche Rechte benötigt das Dienstkonto um folgendes Script ausführen zu können?

try{
#Define update criteria.
$Criteria = "IsInstalled=0 and Type='Software'"

#Search for relevant updates.
$Searcher = New-Object -ComObject Microsoft.Update.Searcher
$SearchResult = $Searcher.Search($Criteria).Updates

#Download updates.
$Session = New-Object -ComObject Microsoft.Update.Session
$Downloader = $Session.CreateUpdateDownloader()
$Downloader.Updates = $SearchResult
$Downloader.Download()

#Install updates.
$Installer = New-Object -ComObject Microsoft.Update.Installer
$Installer.Updates = $SearchResult
$Result = $Installer.Install()

#Reboot if required by updates.
If ($Result.rebootRequired) { shutdown.exe /t 0 /r }

}catch{
  $logSrc="atWsusUpdInstaller"
  Write-EventLog -LogName Application -source $logSrc -EntryType Error -EventId $error.Count -message "$PSItem"
}

Daten aus mehreren Zellen einer CSV Datei löschen

$
0
0

Hallo,

ich hab ein Problem und nach langem suchen bin ich auf noch keine Lösung gekommen.

Ich habe eine riesen CSV Liste mit allen Daten der verwendeten Computer.
In dieser gibt es eine Spalte die den letzen Benutzer anzeigt.

Nun möchte ich ein Script schreiben, dass mir aus dieser Liste bestimmte Nutzer rausfindet und diese aus der Zelle löscht.

Get-Content C:\temp\test2.csv | foreach {$_ -replace '".*?"admin".*?"' , ""} | Set-Content C:\temp\test3.csv

Damit hab ich es versucht allerdings hat dies die ganze CSV Datei zerstört.

Problem dabei ist, dass ich mit Wildcards arbeiten muss. Ich muss einmal Nutzer löschen die im Namen "admin" stehen haben, dies steht in der Mitte vom Namen. Und Benutzer die nicht mit "@domain.de" enden.

Auch hab ich Probiert mir die Daten als Json zu exportieren, die gewünschten Stellen zu bearbeiten und alles neu in eine CSV zu schreiben. Dabei ist nichts passiert und die CSV aus wie vorher.

Ich hoffe einer hier hat eine Lösung für mich.

Gruß

Fabiii

Viewing all 2314 articles
Browse latest View live


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