Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3901 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Vmware
gelöst VMware Powershell CLI Scripts (15)

Frage von vinevg zum Thema Vmware ...

Windows Server
PowerShell Script - Ordnerrechte setzen (7)

Frage von desmondjames zum Thema Windows Server ...

Entwicklung
gelöst Powershell Script: In Forest nach Computernamen suchen (13)

Frage von Agilolfinger zum Thema Entwicklung ...

Neue Wissensbeiträge
LAN, WAN, Wireless

Schwachstelle im WPA2 Protokoll veröffentlicht

(3)

Information von colinardo zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (19)

Frage von Syosse zum Thema Windows Server ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...

Windows Server
gelöst WSUS Updates auf iSCSI speichern (10)

Frage von lcer00 zum Thema Windows Server ...