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

remote abfrage mit systeminfo

$
0
0

Guten Tag Ihr Lieben,

und zwar bräuchte ich hilfe bei einem Script.

$ServerListFile = "C:\scripte\_ServerNamen.txt"
$ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue
$Result = @()

ForEach($computername in $ServerList)
{

    $AVGProc = Get-WmiObject -ComputerName $Computername win32_processor | Measure-Object -property LoadPercentage -Average | Select Average
    $OS = Get-WmiObject -ComputerName $Computername -Class win32_operatingsystem | Select-Object @{Name = "MemoryUsage"; Expression = {“{0:N2}” -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize) }}
    
$result += [PSCustomObject] @{
        ServerName = "$computername"
        CPULoad = "$($AVGProc.Average)%"
        MemLoad = "$($OS.MemoryUsage)%"
      
            }
 $Result | Out-File -FilePath C:\Scripte\CPU_Ram_AVG$(get-date -f yyyy-MM-dd).txt


            }

Über die Liste _ServerNamen möchte mehrere Server abfragen, und zwar mit der abfrage systeminfo.exe

Das funktioniert aber leider nicht, kann mir da einer bitte helfen?

Vielen Dank!!!


Getrennte Benutzer automatisch abmelden ?

$
0
0
Hallo,
bei uns arbeiten die User mit ThinClients an Terminalservern. Da auch die Mehrfachanmeldung erlaubt ist, läuft irgendwann immer der Arbeitsspeicher durch noch vorhandene,aber getrennte Benutzersitzungen voll, weil unsere User lieber die "Trennen"-Option statt "Abmelden" nutzen. Nun, das könnte man vielleicht unterbinden,indem man einfach die "Trennen"-Option ausblendet, aber dann schalten sie einfach frech den ThinClient hart über den Powerbutton aus. Leider scheint die Option der Terminalserver, automatisch getrennte Sitzungen nach einer gewissen Frist abzumelden, nicht wirklich zu funktionieren (Sitzungszeitlimit).
Bisher habe ich einfach alle paar Tage die getrennten Sitzungen per Taskmanager abgemeldet, aber das ist mehr als lästig. Alternativ gehts auch damit, sich mit "qwinsta" die getrennten Sitzungen anzeigen zu lassen und per und "logoff" unter Angabe der SitzungsID manuell abzumelden, aber auch das ist nervig. Gibts vielleicht eine Möglichkeit, das über die Powershell zu regeln ?

Datei in Powershell einlesen, verändern und exportieren

$
0
0

Guten Abend,

ich habe eine Frage zum Bereich Powershell. Zur Situationsbeschreibung ist zu sagen, dass ich täglich eine Cab-Datei vom Server abhole, diese würde ich gerne in Powershell aufbereiten, um im Anschluss die Datei in Access einzubinden.  Dies soll bei Zeiten automatisiert werden.

Die Datei  hat keine richtigen Trennungen, anhand der ich die Datei richtig in Access einbinden kann. 

Kann mir hier jemand helfen? Ich müsste die erste Zeile löschen, bei jeder Zeile die ersten 4 Zeichen und dann an bestimmten Stellen ein ";" setzen. 

LG Bianca

PS: Sorry ich kann derzeit keine Bilder hochladen



Powershell Remoting does not work

$
0
0

Hello,


i cannot connect to any machine in my Test-DOmain via powershell remoting. Firewall is deactivated via GPO for "privat,public,domain". I configured Powershell Remoting via GPO. If i execute the command "winrm get winrm/config" on my machines, i get the following local configuration on each machine:

PS C:\Windows\system32> winrm get winrm/config
Config
    MaxEnvelopeSizekb = 500
    MaxTimeoutms = 60000
    MaxBatchItems = 32000
    MaxProviderRequests = 4294967295
    Client
        NetworkDelayms = 5000
        URLPrefix = wsman
        AllowUnencrypted = true [Source="GPO"]
        Auth
            Basic = true [Source="GPO"]
            Digest = true
            Kerberos = true
            Negotiate = true
            Certificate = true
            CredSSP = false
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        TrustedHosts = * [Source="GPO"]
    Service
        RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
        MaxConcurrentOperations = 4294967295
        MaxConcurrentOperationsPerUser = 1500
        EnumerationTimeoutms = 240000
        MaxConnections = 300
        MaxPacketRetrievalTimeSeconds = 120
        AllowUnencrypted = true [Source="GPO"]
        Auth
            Basic = true [Source="GPO"]
            Kerberos = true
            Negotiate = true
            Certificate = false
            CredSSP = true [Source="GPO"]
            CbtHardeningLevel = Relaxed
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        IPv4Filter = * [Source="GPO"]
        IPv6Filter = * [Source="GPO"]
        EnableCompatibilityHttpListener = true [Source="GPO"]
        EnableCompatibilityHttpsListener = true [Source="GPO"]
        CertificateThumbprint
        AllowRemoteAccess = true [Source="GPO"]
    Winrs
        AllowRemoteShellAccess = true [Source="GPO"]
        IdleTimeout = 7200000
        MaxConcurrentUsers = 2147483647
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 2147483647
        MaxMemoryPerShellMB = 2147483647
        MaxShellsPerUser = 2147483647

I always get the following error. I don't know what must be changed, to make it work. Who has an idea?:

Enter-PSSession : Beim Verbinden mit dem Remoteserver "10.71.72.121" ist folgender Fehler aufgetreten: Die Anforderung kann vom WinRM-Client nicht verarbeitet werden. Unter folgenden Bedingungen kann eine Standardauthentifizierung mit einer IP-Adresse verwendet werden:
Der Transport ist HTTPS, oder das Ziel ist in der TrustedHosts-Liste aufgeführt, und es werden explizite Anmeldeinformationen bereitgestellt. Verwenden Sie "winrm.cmd", um TrustedHosts zu konfigurieren. Beachten Sie, dass Computer in der TrustedHosts-Liste
möglicherweise nicht authentifiziert sind. Führen Sie folgenden Befehl aus, um weitere Informationen zum Konfigurieren von TrustedHosts anzuzeigen: winrm help config. Weitere Informationen finden Sie im Hilfethema "about_Remote_Troubleshooting".
In Zeile:1 Zeichen:1+ Enter-PSSession -ComputerName 10.71.72.121+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : InvalidArgument: (10.71.72.121:String) [Enter-PSSession], PSRemotingTransportException+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Best regards,

Philipp


Lokale Admin Gruppe über GroupPrincipal auslesen

$
0
0

Hallo,

ich möchte für Server die Lokale Admin Gruppe auslesen. Letzt Woche hat der Befehl noch Funktioniert und ich habe die Liste bekommen, auf meinem Windows Client Funktioniert diese liste auch, jedoch auf den Server kommt jetzt eine Fehlermeldung

Der Code:

Add-Type -AssemblyName System.DirectoryServices.AccountManagement

$ContextType = [System.DirectoryServices.AccountManagement.ContextType]::Machine 
        $PrincipalContext = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ContextType, $Computer 
        $IdentityType = [System.DirectoryServices.AccountManagement.IdentityType]::SamAccountName 
        $GroupPrincipal = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($PrincipalContext, $IdentityType, $GroupName)

Die Fehlermeldung: 

format-default : Der Netzwerkpfad wurde nicht gefunden.
    + CategoryInfo          : NotSpecified: (:) [format-default], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.FormatDefaultCommand

Wenn ich z.B. $GroupPrincipal.Members eingebe, bekomme ich den Lokalen Admin Account angezeigt und danach die Meldung:

Fehler beim Durchlaufen einer Auflistung: Der Netzwerkpfad wurde nicht gefunden.
.
In Zeile:1 Zeichen:1
+ $GroupPrincipal.Members
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Director...ctionEnumerator:PrincipalCollectionEnumerator) [], RuntimeException
    + FullyQualifiedErrorId : BadEnumeration

Was kann hier der Grund dafür sein? Bin im Moment etwas ratlos.


XLSX- und CSV-Datei mittels PowerShell einlesen, vergleichen und Werte ausgeben

$
0
0

Hallo,

ich habe bislang noch keine großartig praktische Erfahrung mit PowerShell.

Ich würde gerne automatisiert 2 Dateien einlesen (eine XLSX-Datei und eine CSV-Datei) und die Inhalte miteinander vergleichen. Die übereinstimmenden Inhalte sollten dann in einer 3. Datei oder einem neuen Excel-Sheet ausgegeben werden.

Als Beispiel:

XLSX-Datei:

Mail

a.b@z.com

c.d@z.com

e.f@z.com

CSV-Datei:

Mail

a.b@z.com

g.h@z.com

c.d@z.com

In diesem Fall würde ich also gerne a.b@z.com und c.d@z.com ausgegeben bekommen, da nur diese übereinstimmen.

Ist das möglich?

Falls ja - könntet ihr mir dabei behilflich sein?

Danke und Gruß

Probleme bei dem Versand der Ergebnissen einer Inventarisierung

$
0
0

Hallo Skripter,

in einem Skript zur Inventarisierung von dem PC und den angeschlossenen Monitoren gibt es Probleme bei dem Versand der Ergebnisse per E-Mail.

Die Monitordaten werden in einem Array gespeichert, da möglicherweise mehrere angeschlossen werden können. Habe dann versucht diese Array auch im E-Mailbody zu schreiben aber es kommt nur die erste Seriennummer vor und der Rest bleibt leer.

Wenn diese Arrays auf der Console ausgegeben werden funktioniert es ohne Probleme und alles wird so angezeigt wie es sollte.

Habe dann versucht die Arrays in Strings umzuwandeln und diese anzuzeigen, aber es ändert nichts am Ergebnis.

#########################################
###Inventarisierung für Win 10 Rechner###
#########################################

# Informationen über den Computer auslesen #
############################################

#Auslesen der Mac-Addresse
[String] $MacAddress_Computer = (Get-NetAdapter).MacAddress

#Auslesen des Computernamens
[String] $Name_Computer = $env:COMPUTERNAME

$ComputerInfo = (Get-ComputerInfo)
    #Auslesen des Prozessors
    [String] $Prozessor_Computer = ($ComputerInfo).CsProcessors.Name
    #Auslesen des Herstellers
    [String] $Hersteller_Computer = ($ComputerInfo).CsManufacturer
    #Auslesen des Models
    [String] $Model_Computer = ($ComputerInfo).CsModel
    #Auslesen des Betriebssystems
    [String] $Betriebssystem_Computer = ($ComputerInfo).OsName
    #Auslesen der Seriennummer
    [String] $Seriennummer_Computer = Get-WmiObject -Class Win32_BIOS -ComputerName $Name_Computer


#  Informationen über die angeschlossenen Monitore auslesen #
#############################################################

#Auslesen der Seriennummer(n)
[array] $Seriennummer_Monitor = Get-WmiObject WmiMonitorId -Namespace root\wmi|ForEach-Object{($_.SerialnumberID|ForEach-Object{[char]$_}) -join ""}

#Auslesen der Product ID(s)
[array] $ProduktID_Monitor = Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi|ForEach-Object{($_.ProductCodeID|ForEach-Object{[char]$_}) -join ""}

#Auslesen des Herstellers
[array] $Hersteller_Monitor = Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi|ForEach-Object{($_.ManufacturerName|ForEach-Object{[char]$_}) -join ""}

#Auslesen des Produktionsjahres
[array] $Produktionsjahr_Monitor = (Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi).YearOfManufacture

#Auslesen des Angeschlossenen Computers
[array] $Computername_Monitor = (Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi).PSComputerName

#Auslesen der Anzahl an Monitoren
[int16] $anzahl = $Seriennummer_Monitor.Count




#Ergebnise aufbereiten für den E-Mailversand
[String] $SN_M0 = ($Seriennummer_Monitor[0]).ToString()
[String] $PN_M0=($ProduktID_Monitor[0]).ToString()
[String] $H_M0=($Hersteller_Monitor[0]).ToString()
[String] $Pj_M0=($Produktionsjahr_Monitor[0]).ToString()
[String] $Cn_M0=($Computername_Monitor[0]).ToString()

[String] $SN_M1=($Seriennummer_Monitor[1]).ToString()
[String] $PN_M1=($ProduktID_Monitor[1]).ToString()
[String] $H_M1=($Hersteller_Monitor[1]).ToString()
[String] $Pj_M1=($Produktionsjahr_Monitor[1]).ToString()
[String] $Cn_M1=($Computername_Monitor[1]).ToString()

#Emailversand
$PSEmailServer = "******"


Send-MailMessage -to "test@test.de" -from "Powershell <Test@test.de>" -Subject "Inventarisierung" -Encoding UTF8 -Body "
PC:
MAC-Addresse: $MacAddress_Computer      
Hostname: $Name_Computer                
Prozessor: $Prozessor_Computer         
Hersteller: $Hersteller_Computer        
Model: $Model_Computer                 
OS: $Betriebssystem_Computer          


Monitore angeschlossen: $anzahl Stk. 

Seriennummer: 1. $SN_M0 
              2. $SN_M1 
Produktnummer: 1. $PN_M0 
               2. $PN_M1 
Hersteller: 1. $H_M0 
            2. $H_M1 
Produktionsjahr: 1. $Pj_M0 
                 2. $Pj_M1 
Hostname des angeschlossenen PCs: 1. $Cn_M0 
                                  2. $Cn_M1 

" 

Der E-Mailtext sieht wie folgt aus:

"

PC:

MAC-Adresse: MAC-Adresse

Hostname: Host

Prozessor: Prozessor

Hersteller: Hersteller

Model: Model

OS: OS

Monitor(e):

Seriennummer: 1. Seriennummer

"

Mit freundlichen Grüßen

Dominik Hartl

Powershell Integration to TFS 2018

$
0
0

Hi

      I have two branches and hosted by two different developers.They are using the Nugget internal server. There are three versions of same package. I want to know which developer is using which nugget package version being the Build Administrator.

Is there any way that being a Build Administrator/TFS Admin i can monitor this kind of info.

Thank You!


WSBukhari


Mehrere E-Mail Empfänger......

$
0
0

Hallo,
ich habe folgendes Skript was auch funktioniert:

[CmdletBinding()]
Param (
    [Alias("Host")]
    [string]$VIServer = "VMCBDF01",
    [PSCredential]$Credential,
    [string]$Path,
    [string]$To = xxxx@xxx.de,
    [string]$From = xxxx@xxx.de,
    [string]$SMTPServer = "1.1.1.1"
)



$MailSplat = @{
    To         = $To      
    From       = $From
    Subject    = "$VIServer Snapshot Report"
    Body       = ($Report | Out-String)
    BodyAsHTML = $true
    SMTPServer = $SMTPServer
}

Send-MailMessage @MailSplat


Dort würde ich erne mehr als einen E-Mail Empfänger hinterlegen....
Ich habe es bisher nicht geschafft :-(
Wie bekomme ich das hin?

Danke und Gruß
Dennis


Printer Exportieren und auf neuem Druckserver importieren

$
0
0

Ich muss die Drucker vom einen Druckserver auf einen anderen Druckserver exportieren.

Den Export möchte ich mit folgendem Script machen:

 $Printer = "printer001" 

    $GPC = get-printconfiguration -PrinterName $Printer 
    $GPC.PrintTicketXML | out-file C:\Export\$Printer.xml 

Der Import auf dem neuen Druckserver mit folgenden Script

$Printer = "printer001" 

Add-Printer -Name $printer

$XMLA = Get-Content "C:\Import\$Printer.xml" | Out-String
Set-PrintConfiguration -PrinterName $Printer -PrintTicketXml $XMLA

Erfolgslos. Hat jemand ein funktionierendes Script?


Jan Schweizer

Alle Active Directory Objekte in eine neue Domain migrieren

$
0
0

Hallo zusammen

Ich muss alle Active Directory Objekte exportieren und in einer neuen Domäne importieren.

Dies könnte ja relativ schwer werden, da gewisse Attribute wie SID nur vom System selber vergeben werden können.

Hat jemand Erfahrung mit dem Tool ldifde?

Danke für eure Hilfe


Jan Schweizer

Ausgabe, Properties, verketten, Verständnisfrage

$
0
0

moin,

ich konnte bei einem Exchange Audit keine Properties in einer Zeile angeben und diese in ein File schreiben. Ich vermute da auch Datumsfelder dabei waren. Darf man nur String Propierties in einer Zeile unter Hochkomma angeben?


Beispiel:

$Dateien = Get-ChildItem "C:\temp"
$Dateien
foreach($Datei in $Dateien){
    $Datei.Name+ " " + $Datei.Length # funktioniert"$Datei.Name"+"$Datei.Length" # geht nicht zeigt Dateiname.Length"$Datei.Name+$Datei.Length" # geht nicht zeigt Dateiname.Length
}


Chris

Benutzereingaben ueber Konsole (read-host funktioniert nicht) wenn das Skript innerhalb eines anderen Skriptes aufgerufen wird.

$
0
0

Hallo Powershell-Profis,

ich schreibe ein Powershell-Skript (PSVersion 5.1.14393.2636) auf Windows Server 2016.
Das Skript soll am Ende mehrere verschiedene Aufgaben erfüllen, daher ist es untergliedert:
"Programmstart.ps1"
     "Programmphase1.ps1"
            "UnterprogrammPhase1a.ps1"
            "UnterprogrammPhase1b.ps1"
            "UnterprogrammPhase1c.ps1"
     "Programmphase2.ps1"
            "UnterprogrammPhase2a.ps1"
            "UnterprogrammPhase2b.ps1"
     "Programmphase3.ps1"
            "UnterprogrammPhase3a.ps1"
            "UnterprogrammPhase3b.ps1"
            "UnterprogrammPhase3c.ps1"
            "UnterprogrammPhase3d.ps1"

"Programmstart.ps1" ruft die Dateien "Programmphase....ps1" auf, welche wiederum die Dateien "UnterprogrammPhase....ps1" aufrufen.

Der Aufruf erfolgt über  powershell.exe -file Programmphase1.ps1 -parameter1 $parameter1 - parameter2 $parameter2 

Grundsätzlich funktioniert dieses Prinzip, bis auf zwei Punkte:

Punkt1: Benutzereingaben über die Konsole

(Ich möchte keine GUI verwenden, mit GUI funktioniert es)

Benutzereingaben über read-Host sind nur in der obersten Ebene "Programmstart.ps1" möglich.
Bereits in der nächsten Ebene "Programmphase1.ps1" bleibt das Skript einfach stehen. Es können weder Eingaben gemacht werden, noch kann das Skript abgebrochen werden.

Ich hatte schon versucht das Skript auszutricksen und habe anstatt read-host eine separate Datei mit Mandatory-Parameter aufgerufen, dies hat leider nicht funktioniert.

Gibt es eine Möglichkeit auch in dieser Ebene Benutzereingaben abzufragen?


Punkt2: Darstellung von Schriftfarben in der Konsole


Zur besseren Orientierung im Programmablauf der Konsole sollen bestimmte Textabschnitte farblich hervorgehoben werden. Dies funktioniert nur in der obersten Ebene "Programmstart.ps1" des Programms, nicht in den Unterebenen "Programmphase.....ps1" bzw "UnterprogrammPhase....ps1"

write-host "schwarze Schrift auf grünem Untergrund" -BackgroundColor Green -ForegroundColor Black

Hier werden die Farbanweisungen einfach ignoriert.

Ich habe selbst an mehreren Tagen über mehrere Stunden gegoogelt und ausprobiert, aber keine Lösung finden können.
Es wäre super, wenn mir hier jemand weiterhelfen könnte.

Vielen Dank schon mal im Voraus.

Viele Grüße
PSNeuling

Powershell - Zahlen aus SQL mit 0 auf 8 Stellen auffüllen

$
0
0

Hallo,
ich habe das Problem das ich eine Menge an Zahlen, die vom einem SQL Server hole und zwischen 1 - 8 Zeichen lang sein können auf 8 stellen bringen muss.

Dabei müssen die stellen nach links mit 0 aufgefüllt werden.

Hat jemand eine Idee wie man da machen kann ?

Danke
Markus

Probleme mit UTF 8 Encoding

$
0
0

Guten Tag zusammen,

ich habe Probleme mit den Umlauten beim Versenden einer Mail mit Hilfe von Powershell. Leider finde ich nicht Fehler nicht & habe selbst auch erst wenig Erfahrung mit PowerShell. Vllt kann mir ja jemand helfen.

Hier die relevanten Codesnipsel:

# message
$emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo )
$emailMessage.Subject = "Ihr Kennwort laeuft bald ab"
$emailMessage.BodyEncoding = System.Text.Encoding.UTF8;
$emailMessage.IsBodyHtml = $true
$emailMessage.Body = "<html>
    <head>
    </head>
    <body>
Hallo $GivenName $Surname,
<br>        
Ihr Domaenenkennwort laeuft am folgenden Zeitpunkt ab: $PasswordExpireDate.
<br>    
Sie haben $DaysBeforePasswordchange Tage Zeit, bis das Kennwort ablaeuft. Sie sollten es nun ändern.
Um ihr Kennwort jetzt zu aendern klicken Sie bitte <a href='www.google.de.de'>hier</a>
<br>
Freundliche Grüße
Das Team der SKS
</body>
</html>
"

#client
$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $True
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
$SMTPClient.Send( $emailMessage )

sowie die Fehlemeldung:Fehlermeldung

Gruß

Carsten


Method invocation failed, Verständnisfrage

$
0
0

moin

$Guid = $Mailbox.Guid + ":\Kalender"
$Perms = Get-MailboxFolderPermission $Guid

laut Hilfe könnte ich diese Properties übergeben. Mit Alias funktioniert es. Warum mit GUID nicht? Liegt das daran, das ich es mittels Remote Session abrufe?

-Identity

The Identity parameter specifies the mailbox folder that you want to view. This parameter uses the syntax: <Mailbox>:\<Folder>. For the value of <Mailbox>, you can use any value that uniquely identifies the mailbox.

For example:

  • Name

  • Display name

  • Alias

  • Distinguished name (DN)

  • Canonical DN

  • <domain name>\<account name>

  • Email address

  • GUID

  • LegacyExchangeDN

  • SamAccountName

  • User ID or user principal name (UPN)

Method invocation failed because [System.Guid] does not contain a method named 'op_Addition'.
At KalenderDefaultPermission.ps1:6 char:1
+ $Guid = $Mailbox.Guid + ":\Kalender"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound


Chris

IF -eq geht nicht? -like schon

$
0
0

moin,

es gibt bei den Kalender Permissionproperties ein Userfeld "Default"

wenn ich diesem mit -eq überprüfen will funktioniert es nicht. Mit -like geht es?

$Permission.User -eq 'Default'

#oder

$Permission.User -eq "Default"

geht es nicht. Lediglich mit -like

obwohl unter User einen Default gibt.

$ExSession = New-PSSession -ConfigurationName "Microsoft.Exchange" -ConnectionUri http://ex/PowerShell/ -Authentication Kerberos
Import-PSSession $ExSession -AllowClobber

$Mailboxes = Get-Mailbox -Database "user"
foreach($Mailbox in $Mailboxes){
#$c.Name, $c.Alias
$Alias = $Mailbox.Alias + ":\Kalender"
$Perms = Get-MailboxFolderPermission $Alias
    foreach($Permission in $Perms){
        if($Permission.AccessRights -ne 'AvailabilityOnly' -and $Permission.User -like 'Default*'){
            write-host $Mailbox.Name $Permission.user $Permission.Accessrights -ForegroundColor Yellow
        }
    }
}



Chris


Sicherheitsabfrage einbauen

$
0
0

Hallo zusammen,

wir arbeiten sehr viel im AD und müssen immer wieder User neu anlegen oder verschieben. Damit die Arbeit etwas schneller von der Hand geht, habe ich im Netz nach einem Script gesucht welches die entsprechenden Gruppen von einem Musteruser auf einen neuen kopiert. Jedoch enthält dieses Script keine Sicherheitsabfrage ala "Sind Sie sicher?". Da ich mich noch sehr wenig in der Powershell auskenne brauche ich etwas Hilfe dabei. Kann mir jemand helfen den Ansatz zu finden? Es handelt sich um dieses Script: https://www.frankysweb.de/quick-and-dirty-active-directory-gruppen-von-benutzer-zu-benutzer-kopieren/

Danke und Grüße,

Andreas

Powershell und O365 - Get-InboxRule

$
0
0

Hallo,

ich bin derzeit dabei über ein Powershell-Script die Regeln bestimmter Benutzer in unserer Domain auszulesen.

Dabei ist jedoch ein kleines Problem entstanden, dass sich nicht lösen lässt.

Laut der Office-Seite für Get-InboxRule sollten folgende Cmdlets angeboten werden:

Get-InboxRule
   [[-Identity] <InboxRuleIdParameter>]
   [-DescriptionTimeFormat <String>]
   [-DescriptionTimeZone <ExTimeZoneValue>]
   [-DomainController <Fqdn>]
   [-Mailbox <MailboxIdParameter>]
   [-IncludeHidden]
   [-BypassScopeCheck]
   [-SweepRules]
   [<CommonParameters>]



Mein Powershell bietet mir jedoch nur folgende Möglichkeiten

Get-InboxRule
-DescriptionTimeFormat
-Identity
-DescriptionTimeZone
-AsJob
-ErrorAction
-Verbose
-OutVariable
-InformationAction
-WarningVariable
-Debug
-PiplineVariable
-ErrorVariable
-OutBuffer
-WarningAction
-InformationVariable


Und ich benutze folgenden Code

cls
$office365UserPrincipalName = "benutzer@domain.unternehmen.com"
$PSExoPowershellModuleRoot = (Get-ChildItem -Path $env:userprofile -Filter CreateExoPSSession.ps1 -Recurse -ErrorAction SilentlyContinue -Force | Select -Last 1).DirectoryName
$ExoPowershellModule = "Microsoft.Exchange.Management.ExoPowershellModule.dll";
$ModulePath = [System.IO.Path]::Combine($PSExoPowershellModuleRoot, $ExoPowershellModule);

Import-Module $ModulePath;

$Office365PSSession = New-ExoPSSession -UserPrincipalName $office365UserPrincipalName -ConnectionUri "https://outlook.office365.com/powershell-liveid/"

Import-PSSession $Office365PSSession Set-Mailbox,Set-MailboxAutoReplyConfiguration,Set-MailboxMessageConfiguration,Get-InboxRule,Remove-InboxRule,Get-SweepRule,Remove-SweepRule,Search-Mailbox -Verbose -AllowClobber

Get-InboxRule 


An dieser stelle würde ich dann gerne "Get-InboxRule -Mailbox andererUser@domain.unternehmen.com" auslesen.

Die "-Mailbox"-Funktion wird mir jedoch nicht angeboten und führt nur zu Fehlern:

A parameter cannot be found that matches parameter name 'Mailbox'.+ CategoryInfo          : InvalidArgument: (:) [Get-InboxRule], ParameterBindingException+ FullyQualifiedErrorId : NamedParameterNotFound,Get-InboxRule+ PSComputerName        : outlook.office365.com

 Leider kann ich noch keine Screenshots einfügen.

Danke für eure Hilfe im voraus :)

PS: Powershellversion laut $PSVersionTable

Name                           Value                                                                                                                                           
----                           -----                                                                                                                                           
PSVersion                      5.1.15063.1478                                                                                                                                  
PSEdition                      Desktop                                                                                                                                         
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                         
BuildVersion                   10.0.15063.1478                                                                                                                                 
CLRVersion                     4.0.30319.42000                                                                                                                                 
WSManStackVersion              3.0                                                                                                                                             
PSRemotingProtocolVersion      2.3                                                                                                                                             
SerializationVersion           1.1.0.1     

Per Powershell Hauptordner überwachen und bei neuen Unterordner Dateien erstellen

$
0
0

Hallo und guten Tag,

bislang haben wir per eigenem Powershell Script auf Knopfdruck Kundenordner erstellt, die entsprechende Unterordner (Kalkulation, Angebot etc.) hatten. Nun arbeiten wir mit einem CRM Tool, das die Kundenordner auf unserem lokalen Western Digital Server anlegt. Allerdings verfügen diese nicht über die entsprechenden Unterordner und man müsste diese nun manuell anlegen.

Ich suche nun nach einer Möglichkeit, per Powershell den "Mutterordner", also den Ordner, in welchem die Kunden abgelegt werden zu überwachen. Sobald ein neuer Kundenordner erstellt wird, soll Powershell automatisch Unterordner erstellen, in denen wiederum Vorlagedateien sind (Ordner Kalkulation beinhaltet dann beispielsweise eine Excel Datei).

Frage: funktioniert das? Wie könnte der Code aussehen?

Viele Grüße

Marv

Viewing all 2314 articles
Browse latest View live


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