Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell Abfrage im Script mit Timer

Frage Entwicklung

Mitglied: Andre1979

Andre1979 (Level 1) - Jetzt verbinden

14.12.2012 um 18:05 Uhr, 3646 Aufrufe, 6 Kommentare

Ich möchte in einem powershell Script eine abfrage einbauen

In einem Powershell Script frage ich den Status eines Snapmirror ab und schreibe den Status in eine Variable $snapmirrorstatus

$snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status | GetUnique -asstring | FT -AutoSize -hideTableHeaders

Die Ausgabe kann "idle" oder "transferring" sein.
Erst wenn der Status "idle" ist soll das Script weiter laufen.

Wie mache ich das am besten?
Mitglied: Friemler
14.12.2012, aktualisiert um 18:31 Uhr
Deinen Schnipsel in eine Do...While-Schleife stecken???
Bitte warten ..
Mitglied: Pjordorf
14.12.2012, aktualisiert um 18:40 Uhr
Hallo auch an dich "Powershell Abfrage im Script mit Timer",

Zitat von Andre1979:
Wie mache ich das am besten?
Vielleicht so?
01.
while ($snapmirrorstatus <> "idle"){ 
02.
    start-sleep -s 20 
03.
 
04.
    $snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status | GetUnique -asstring | FT -AutoSize -hideTableHeaders 
05.
}
Gruß,
Peter

PS. Zu langsam heute
Bitte warten ..
Mitglied: Andre1979
14.12.2012, aktualisiert um 22:50 Uhr
Ahhhhhh... ich habe es verstanden...

Als erstes füttern wir die Variable mit

$snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status | GetUnique -asstring | FT -AutoSize -hideTableHeaders

Dann wird mit "while ($snapmirrorstatus <> "idle")" die Bedingung abgefragt.
Da ich beim starten des Script immer davon ausgehe, das der Status "transferring" ist, ist das Ergebnis also wahr.
Dann fängt mit der "{" der Loop an, der Timer läuft mit "Start-sleep" und danach wird die Variable neu gefüllt und der Loop mit "}" beendet und die Bedingung erneut abgefragt.
Das ganze endet erst wenn die Bedingung nicht mehr erfüllt ist und der Loop somit unterbrochen wird, und der nächste Teil des Scripts abgearbeitet wird.
Bitte warten ..
Mitglied: Andre1979
15.12.2012 um 11:39 Uhr
Das mit der Schleife habe ich verstanden, nur lässt sich die $snapmirrorstatus Variable nicht füllen....

mit "Get-NaSnapmirror -Name $vol | select Status | FT -AutoSize -hideTableHeaders"
bekomme ich als Ausgabe "idle" oder "transferring".

möchte ich jedoch die Variable füllen:
$snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status | FT -AutoSize -hideTableHeaders
und mir diese dann mit "Write-Host $snapmirrorstatus" Ausgeben lassen, bekomme ich als Antwort:

Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartDa
ta Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndD
ata Microsoft.PowerShell.Commands.Internal.Format.FormatEndData

Warum wird die Variable nicht gefüllt?

P.S zu meiner Verteidigung: ich blutiger Anfänger was Scripting angeht..............
Bitte warten ..
Mitglied: Andre1979
15.12.2012, aktualisiert um 13:33 Uhr
konnte das Problem lösen
01.
$snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status 
02.
while ($snapmirrorstatus -cnotlike "@{Status=Idle}"){ 
03.
	Write-Host $snapmirrorstatus 
04.
    start-sleep -s 20 
05.
    $snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status 
06.
07.
Write-Host $snapmirrorstatus 
08.
 
Aber warum funktioniert das nicht?
01.
$snapmirrorstatus = Get-NaSnapmirror -Name $vol | select Status | FT -AutoSize -hideTableHeaders
Wer kann mir mal das Licht anmachen, bzw. wie sollte das im Optimalfall aussehen?
Bitte warten ..
Mitglied: Andre1979
16.12.2012 um 14:27 Uhr
Habe den Lichtschalter gefunden....
Das ganze mal auf den Status des Windows Update Dienst bezogen

01.
$ServiceName ="wuauserv" 
02.
$Date = Get-Date 
03.
$ServiceStatus = Get-Service -Name $ServiceName 
04.
while ($ServiceStatus.Status -cnotlike "Stopped"){ 
05.
Write-Host "am" $Date "ist der Service" $ServiceStatus.DisplayName "im Status" $ServiceStatus.Status "- erneute  Abfrage in 20 Sekunden" 
06.
start-sleep -s 20 
07.
$ServiceStatus = Get-Service -Name $ServiceName 
08.
}
Der Denkfehler war, das $ServiceStatus ein Array und keine Variable ist.
01.
 
02.
PS C:> $ServiceName ="wuauserv" 
03.
PS C:> $ServiceStatus = Get-Service -Name $ServiceName 
04.
PS C:> $ServiceStatus 
05.
 
06.
Status   Name               DisplayName 
07.
------   ----               ----------- 
08.
Running  wuauserv           Windows Update
Um jetzt sauber mit z.B dem Status zu arbeiten, muss bei der Abfrage des Array der Spaltenname angegeben werden
01.
PS C:> $ServiceStatus.Status 
02.
Running
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Dell Garantie Abfrage per PowerShell Script (5)

Frage von evilknievel zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...